python3 << "EOF" S=[47,77,49,45] log=[(4,3,3,10,1),(6,3,0,17,3),(4,0,2,10,1),(4,4,1,16,2),(4,1,3,18,0),(5,1,2,18,3),(4,2,0,9,0),(1,3,2,4,1),(2,1,0,15,1),(2,1,3,11,2),(6,2,1,13,2),(3,3,1,15,0),(5,1,3,16,2),(3,3,1,11,2),(3,0,1,22,2),(1,0,3,22,2),(1,2,1,12,3),(6,2,1,21,1),(6,4,3,8,3)] d={} for r,l,g,x,f in log: d[(r,l)]=(r,l,g,x,f) E=sorted(d.values()) print("E",E,len(E)) w=[((S[0]+2*S[1])%53)-26,((S[1]+S[2]+S[3])%53)-26,((2*S[0]+S[2])%53)-26] tau=[((S[(l+1)%4]+3*l)%31)-15 for l in range(5)] lam=(5*S[0]+7*S[1]+11*S[2]+13*S[3])%1009 print("INIT",w,tau,lam) A=R=F=0 cc=None for m,(r,l,g,x,f) in enumerate(E,1): if r!=cc: snap=w.copy() cc=r p=(x+S[(r+l+g)%4]+2*f+tau[l])%23 b=(p+snap[(l+g)%3]+m+g)%4 if b==0: dm=x+w[0]-tau[l] elif b==1: dm=2*x-snap[1]+S[2] elif b==2: dm=x+snap[2]-S[3]+r else: dm=w[1]-snap[0]+S[0]-f clip=False if (r+2*g+l+lam)%7==0: dm=S[(2*r+l+f)%4]-x+4*m clip=True R+=1 ok=(dm+p+l+f)%5!=2 nw=[(w[2]+dm+p+m)%137,(w[0]+2*dm-g)%137,(w[1]+3*p+r+f)%137] w=nw if not ok: w[2]=(w[2]+S[(r+m)%4])%137 F+=1 tau[l]=((2*tau[l]-dm+f)%31)-15 lam=(41*lam-9*dm+3*p+r+g)%1009 else: A+=1 tau[l]=((tau[l]+dm+p)%31)-15 lam=(41*lam+7*dm+5*p+l+m)%1009 print(m,r,l,g,x,f,"snap",snap,"p",p,"b",b,"d",dm,"clip",clip,"ok",ok,"w",w,"tau",tau,"lam",lam) Xi=sum((l+2)*(tau[l]+15) for l in range(5)) D=(3*w[0]+5*w[1]+7*w[2]+11*lam+13*A+17*R+19*F+Xi)%10007 print("FINAL",A,R,F,Xi,D,w,tau,lam) EOF