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

Triangle	 	Tn=n(n+1)/2	 	1, 3, 6, 10, 15, ...
Pentagonal	 	Pn=n(3n−1)/2	 	1, 5, 12, 22, 35, ...
Hexagonal	 	Hn=n(2n−1)	 	1, 6, 15, 28, 45, ...
It can be verified that T285 = P165 = H143 = 40755.

Find the next triangle number that is also pentagonal and hexagonal.
"""
triangles = []
n = 1
while (n * (n + 1) / 2) < 10000000000:
    triangles.append(int(n * (n + 1) / 2))
    n += 1

pentagonals = []
m = 1
while (m * (3 * m - 1) / 2) < 10000000000:
    pentagonals.append(int(m * (3 * m - 1) / 2))
    m += 1

hexagonals = []
p = 1
while (p * (2 * p - 1)) < 10000000000:
    hexagonals.append(int(p * (2 * p - 1)))
    p += 1

for i in range(0, len(triangles)):
    x = triangles[i]
    if x in pentagonals and x in hexagonals:
        print(x)

# 1533776805 quite slow
