#!/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] s0=[211,271,377,529,727,971] g0=[307,367,489,673,919,1227] N=[0]*64 C=[0]*64 P=[0]*64 N[1]=173 C[1]=211 P[1]=1 N[2]=233 C[2]=271 P[2]=2 N[4]=331 C[4]=377 P[4]=3 N[8]=467 C[8]=529 P[8]=4 N[16]=641 C[16]=727 P[16]=5 N[32]=853 C[32]=971 P[32]=6 Z=431 def run(k): global kk,sz,bestB,bestA,bestH,bestJ,bestT,Z kk=k sz=pc(k) bestB=1000000000 bestA=0 bestH=99 bestJ=99 bestT=0 for j in js(k): T=kk-(2**j) m=minbit(T) A=mod(sum([N[T]*n0[j],e(m,j),7*pc(T),3*j]),997) Bh=mod(sum([C[T],s0[j],N[T],2*n0[j],3*A,e(m,j)]),9973) Bm=mod(sum([C[T],g0[j],2*N[T],n0[j],5*A,2*e(m,j)]),9973) Z=mod(sum([37*Z,11*A,13*Bh,19*sz,23*sum([j,1]),29]),9973) better=(Bh