#!/usr/bin/env python3 def mod(a,b): return a-(a//b)*b def e(a,b): u=min(a,b) v=max(a,b) return mod(sum([97,53*u,71*v,11*u*v,17*u*u,13*v*v]),997) def pc(x): c=0 for p in range(6): if mod(x//(2**p),2)>0: c=sum([c,1]) return c def js(k): a=[] for j in range(6): if mod(k//(2**j),2)>0: a.append(j) return a def minbit(t): m=0 while mod(t//(2**m),2)==0: m=sum([m,1]) return m n0=[173,233,331,467,641,853] N=[0]*64 N[2]=173 N[3]=233 N[5]=331 def run(k): for j in js(k): T=k-(2**j) m=minbit(T) print(k,j,T,m,len(N),len(n0)) A=mod(sum([N[T+1]*n0[j+1],e(m,j),7*pc(T),3*j]),997) print(A) run(3)