ProjectEuler, problem 31