python3 - <<'PY' p=996979 d=14641 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] patterns=[] k=48 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() YS=[] 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) YS.append((tuple(ys),m)) print('Y',len(YS)) res={} for ys,m in YS: y1=ys[0]; yk=ys[-1] P=[] for a in range(0,y1): if not all(any(li<=a y<=ui for li,ui in K) for y in (y1,yk)): continue for b in range(yk+1,p): if not all(any(li<=b y<=ui for li,ui in K) for y in (y1,yk)): continue if any(li<=a+b<=ui for li,ui in K): P.append((a,b)) if P: res[ys]=(m,len(P),min(P),max(P)) for ys,v in res.items(): print(v,ys[:3],ys[-3:]) PY