Source: https://www.kau.edu.sa/Files/830/Files/57493_Art_of_Programming_Contest_Part4.pdf