python3 - <<'PY' from itertools import combinations p=996979 J=[(22716,22810),(397695,397787),(731292,731385)] K=J+[(a+p,b+p) for a,b in J] W=[b-a for a,b in K] k=48 patterns=[] def gen(pos,cost,arr,D): if pos==k-1: patterns.append(tuple(arr)); return w=1 if pos in (0,k-2) else 2 for e in range((D-cost)//w+1): arr.append(e); gen(pos+1,cost+w*e,arr,D); arr.pop() G=set() for m,(L,U) in enumerate(K): D=W[m]-(2*k-4) if D<0: continue patterns.clear(); gen(0,0,[],D) for e in patterns: delta=2*k-4+2*sum(e[1:k-2])+e[0]+e[k-2] lo=(L-e[0])//2; hi=(U-delta-1-e[0])//2 for y1 in range(lo,hi+1): ys=[y1]; y=y1 for gg in e: y+=1+gg; ys.append(y) G.add(tuple(ys)) YS=set() for m,(L,U) in enumerate(K): for y1 in range((L-1)//2,U//2+1): for rest in combinations(range(y1+1,y1+50),47): ys=(y1,)+rest if ys[0]+ys[1]>=L and ys[-2]+ys[-1]<=U: YS.add(ys) print(len(G),len(YS),'diff',len(G-YS),len(YS-G)) for ys in G-YS: print('Gonly',ys[0],ys[-1],ys[1]-ys[0],ys[-1]-ys[-2]) for ys in YS-G: print('Yonly',ys[0],ys[-1]) PY