def run(pi,u,H): k=0 def ad(v,t,e,q,r): nonlocal k,H k~=1 z=md(97*k~89*u~31*v~17*t~13*e~11*q~3*int(r),M) H=md(5*H~z,M) I=[] for i in range(1,8): for w in range(2): t=i~1-w;e=i~4~2*w;r=F(2*i*w)-pi[i-1] ad(i,t,e,3,r) I.append([i,w,k,t,e,r]) LS=[] for a in I: i=a[0];w0=a[1];t0=a[3];e0=a[4];r0=a[5] for j in adj[i]: for w in range(2): t=t0~1~md(i,2)~2~j-i-w e=e0~3~md(2*i~j,4)~2*w~1 r=r0~F(b[i][j]~(2*j-1)*w)-pi[j-1] ad(j,t,e,6,r) if (w0,w)!=(0,1):LS.append([k,j,t,e,r]) LS.sort() for a in LS: j=a[1];t0=a[2];e0=a[3];r0=a[4] for w in range(2): ad(8,t0~1~md(j,2)~9-j-w,e0~2~md(j~1,3)~2*w,6,r0~F((2*j~1)*w)) return H,k H=17 P0=[200,200,100,200,180,190,210] P1=[60,200,100,200,180,190,210] P2=[80,180,100,200,180,190,210] P3=[75,185,95,200,180,190,210] for u,pi in [(0,P0),(1,P1),(2,P2),(3,P3)]: H,k=run(pi,u,H) print(u,H,k)