#!/usr/bin/env python3 from collections import Counter n=112;C=[[1]];f={s:[] for s in range(2,225)};z=n for u in range(2,n+1): for v in range(u,n+1): s=u*v if s>224:break if u==v:f[s].append(u) else:z+=1;f[s].append(z);C.extend(([-z,u],[-z,v])) for a in range(1,n+1): for b in range(a,n+1): s=a+b;C.append([-a,-b]+([s] if s<=n else [])+f[s]) C.extend([-a,-(113-a)] for a in range(1,57)) V={};steps=[] for r in range(1000): fresh={} for cl in C: if any(V.get(abs(i))==(i>0) for i in cl):continue left=[i for i in cl if abs(i) not in V] if not left:print('conflict',cl,'at round',r);break if len(left)==1:fresh[abs(left[0])]=left[0]>0 else: if not fresh:print('STUCK',r);break V.update(fresh);steps.append((r,sorted(i for i in fresh if i<=n and fresh[i]),sorted(i for i in fresh if i<=n and not fresh[i]))) continue break print(steps) print('forced',sorted(i for i in V if i<=n and V[i]))