python3 - <<'PY' 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] 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) y1=ys[0] yk=ys[-1] A=[] B=[] for li,ui in K: a0=max(0,li-y1) a1=min(y1-1,ui-yk) if a0<=a1: A.append((a0,a1)) b0=max(yk+1,li-y1) b1=min(p-1,ui-yk) if b0<=b1: B.append((b0,b1)) P=[] for a0,a1 in A: for b0,b1 in B: for a in range(a0,a1+1): for lk,uk in K: ll=max(b0,lk-a) hh=min(b1,uk-a) for b in range(ll,hh+1): if b>yk: P.append((a,b)) if P: YS.append((tuple(ys),m,len(P),min(P),max(P),P)) for z in YS: ys,m,c,mn,mx,P=z print('m',m,'len',len(ys),'range',ys[0],ys[-1],'Pcount',c,'min',mn,'max',mx) PY