#!/usr/local/bin/python3 def hit(c,q): for i in range(3): if c[i]==q:return i return -1 def N(c,b,o,q,a,bb): c=c[:];b=b[:];h=hit(c,q) if h<0: e=o[2];m=(c[e]+b[e]+a)%7;c[e]=(q+bb)%7;b[e]=a%2 else: e=h;m=(c[h]+b[h]+a)%7;c[h]=(c[h]+bb)%7;b[h]=1-b[h] o=[e]+[x for x in o if x!=e] return c,b,o,m def mv(o,h): return [h]+[x for x in o if x!=h] def run(I,J,K,F): if I==0:c=[(J+1)%7,(K+2)%7,(J+K+3)%7];o=[0,1,2] elif I==1:c=[(K+3)%7,(J+4)%7,(J+2*K+1)%7];o=[1,2,0] else:c=[(J+K+2)%7,(K+5)%7,(2*J+4)%7];o=[2,0,1] b=[(I+F)%2,(J+F)%2,(K+F)%2] C0=c[:];B0=b[:];O0=o[:] q1=(I+K+F)%7;q2=(J+2*K+F)%7;q3=(2*I+J+K)%7 h0=hit(c,q1) c,b,o,s=N(c,b,o,q1,I+F,J+K) C1=c[:] rho=0 if h0<0 and B0[O0[2]]==1:rho=1 elif h0>=0 and (s+c[o[2]])%2!=(I+C0[O0[2]])%2:rho=1 elif (o[0]+o[2]+s+F)%2!=(O0[0]+O0[2]+I)%2:rho=1 if rho: k=o[2];c[k]=C0[k];b[k]=B0[k] m=o[1];u=(c[m]+b[m]+s)%7;c[m]=(q2+u)%7;b[m]=max(b[m],(J+K+F)%2);o=mv(o,m) else: c,b,o,u=N(c,b,o,q2,J+F,K+I) w=(2*c[0]+3*c[1]+c[2]+o[0]+2*o[1]+u)%7 delta=0 if w==c[o[0]]:delta=1 elif rho and b[o[2]]==B0[o[2]]:delta=1 elif rho==0 and o[0]=2 and c[o[0]]==q3:omega=1 elif rho and (C0[O0[0]]+c[o[2]])%7!=(c[o[0]]+C0[O0[2]])%7:omega=1 elif delta and o[0]==O0[2]:omega=1 elif eps and b[o[2]]:omega=1 R=(2*c[0]+c[1]+3*c[2]+o[0]+2*o[1]+rho+delta+2*eps+omega)%11 S=(c[o[0]]+2*c[o[1]]+3*c[o[2]]+I+J+K+F+omega)%10 p=(c[o[2]]+o[0]+I+F+omega)%2 psi=(F+J+K)%2 M=1 if R in (2,4,8) and S in (3,4,5,6) and p!=psi else 0 Hh=1 if M and rho and delta and eps and omega else 0 return [I,J,K,F,rho,delta,eps,omega,R,S,p,psi,M,Hh,s,u,w,c,b,o,C0,B0,O0,C1] cases=[(0,1,2,0),(0,1,2,1),(0,1,0,0),(0,1,0,1),(0,2,0,0),(0,2,0,1),(0,2,1,0),(0,2,1,1),(1,2,0,0),(1,2,0,1),(1,2,1,0),(1,2,1,1),(1,0,1,0),(1,0,1,1),(1,0,2,0),(1,0,2,1),(2,0,1,0),(2,0,1,1),(2,0,2,0),(2,0,2,1),(2,1,2,0),(2,1,2,1),(2,1,0,0),(2,1,0,1)] num=0;den=0 for z in cases: r=run(*z);I,J,K,F=r[:4] if I==0:wt=5 elif I==1:wt=6 if F else 4 else:wt=6 if F==0 else 4 den+=wt*r[12];num+=wt*r[12]*r[13] print(r[:17]) print('NUM',num,'DEN',den)