#!/usr/bin/env python3 def main(d): tbl = [1] n = 1 while p(n, tbl) % d: n+=1 return n, p(n,tbl) def p(n, tbl=[1]): if n < 0: return 0 if n >= len(tbl): r = -sum((-1)**i * (p(n-a, tbl) + p(n-b, tbl)) for a,b,i in pentnum(n)) tbl.append(r) return tbl[n] def pentnum(bound): n = 1 a,b = 1,2 while a <= bound: yield a,b,n a += 3*n + 1 b += 3*n + 2 n += 1 print(main(10**6)[0])