import json,random,sys def nb(a,v): r=[];m=a[v] while m: b=m&-m;r.append(b.bit_length()-1);m^=b return r def c4(n,a): s=0 for u in range(n): for w in range(u+1,n): k=bin(a[u]&a[w]).count('1') if k>1:s+=k*(k-1)//2 return s//2 def cyc(n,a,L,cap=0): if L>n:return(False,True) N=[nb(a,v) for v in range(n)];B=[cap if cap else -1] def f(s,c,vis,d): if B[0]==0:raise RuntimeError() if B[0]>0:B[0]-=1 if d==L:return bool((a[c]>>s)&1) for w in N[c]: if w>s and not ((vis>>w)&1): if f(s,w,vis|1<n:return 0 N=[nb(a,v) for v in range(n)];t=[0] def f(s,c,vis,d): if d==L: if (a[c]>>s)&1:t[0]+=1 return for w in N[c]: if w>s and not ((vis>>w)&1):f(s,w,vis|1<3) for _ in range(400): st=[] for v,d in enumerate(degs):st+=[v]*d rng.shuffle(st);a=[0]*n;ok=True for i in range(0,len(st),2): x,y=st[i],st[i+1] if x==y or ((a[x]>>y)&1) or (x in hi and y in hi):ok=False;break a[x]|=1<>u)&1) or ((a[y]>>v)&1):continue return(x,y,u,v) return None def sw(a,m): x,y,u,v=m a[x]^=1<>v)&1 or bin(a[v]).count('1')<3:return False if c4(n,a):return False if cyc(n,a,8)[0]:return False h,c=cyc(n,a,16) if h or not c:return False if n>=32: h,c=cyc(n,a,32) if h or not c:return False return True def one(n,rng,rs,ia,ib): st={'n':n,'attempts':0,'c4free':0,'c8free':0,'c16probed':0,'minc16':None,'c16free':0} for degs in fams(n): for _ in range(rs): a=gen(n,degs,rng) if a is None:continue st['attempts']+=1 cur=c4(n,a);T=1.2 for _ in range(ia): m=mv(n,a,rng) if m is None:break sw(a,m);nv=c4(n,a) if nv<=cur or rng.random()x:e.append([y,x]) st['c16free']+=1 return e,st return None,st def main(): p=[x for x in sys.argv[1:] if not x.startswith('--')] if len(p)<2: print(json.dumps({'ok':False,'error':'usage: jsp82_submit.py FROM TO'}));return A,B=int(p[0]),int(p[1]) if B