"""
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.

p(n)=(3*n**2-n)/2
h(n)=2*n**2-n

Find the next triangle number that is also pentagonal and hexagonal.
"""
from helpers import analytics
analytics.monitor()

def tri(n):
    return n*(n+1)/2

def isPent(t):
    a = (1+((1+24*t)**0.5))/6
    if a == int(a):
        return True
    return False

def isHex(t):
    a = (1+(1+8*t)**0.5)/4
    if a == int(a):
        return True
    return False

def main():
    n = 286
    while True:
        t = tri(n)
        if isPent(t) and isHex(t):
            return t
        n += 1

print(main(), analytics.lap(), analytics.maxMem())