"""
Треугольные, пятиугольные и шестиугольные числа вычисляются по
нижеследующим формулам:
Треугольные	 	Tn=n(n+1)/2	 	1, 3, 6, 10, 15, ...
Пятиугольные	 	Pn=n(3n−1)/2	 	1, 5, 12, 22, 35, ...
Шестиугольные	 	Hn=n(2n−1)	 	1, 6, 15, 28, 45, ...
Можно убедиться в том, что T285 = P165 = H143 = 40755.
Найдите следующее треугольное число, являющееся также пятиугольным
и шестиугольным.
"""
pent_nums, hexag_nums = {}, {}
for num in range(144, 100000):
    triangle = num * (num + 1) // 2
    if pent_nums.get(triangle, False) and hexag_nums.get(triangle, False):
        print(num, triangle)
        break
    pent_nums[num * (3 * num - 1) / 2] = True
    hexag_nums[num * (2 * num - 1)] = True
