"""
Project Euler Problem 45
========================

Triangle, pentagonal, and hexagonal numbers are generated by the following
formulae:

Triangle     T[n]=n(n+1)/2   1, 3, 6, 10, 15, ...
Pentagonal   P[n]=n(3n-1)/2  1, 5, 12, 22, 35, ...
Hexagonal    H[n]=n(2n-1)    1, 6, 15, 28, 45, ...

It can be verified that T[285] = P[165] = H[143] = 40755.

Find the next triangle number that is also pentagonal and hexagonal.
"""


triangle = set([(i*(i+1))/2 for i in range(100000)])
pentagonal = set([(i*(3*i - 1))/2 for i in range(100000)])
hexagonal = set([i*(2*i - 1) for i in range(100000)])

t_p = triangle.intersection(pentagonal)
t_p_h = list(t_p.intersection(hexagonal))

print max(t_p_h)
