python3 - <<'PY' p=996979 d=14641 g=379153 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() sol=[] 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)) for a0,a1 in A: for b0,b1 in B: for a in range(a0,a1+1): l=max(b0,L+0,a+96) # need a+b in K 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: continue X=[a]+ys+[b] ok=True for i1 in range(len(X)): for j1 in range(i1+1,len(X)): ss=X[i1]+X[j1] if not((22716<=ss<=22810) or (397695<=ss<=397787) or (731292<=ss<=731385) or (1019695<=ss<=1019789) or (1394674<=ss<=1394766) or (1728271<=ss<=1728364)): ok=False if ok: sol.append(tuple(X)) print('count',len(sol)) u=set(sol) print('unique',len(u)) S2=0 S3=0 D2=0 D3=0 for X in u: for x in X: S2=(S2+x*x)%983 S3=(S3+x*x*x)%983 a=(d*x)%p D2=(D2+a*a)%983 D3=(D3+a*a*a)%983 print('sumx2',S2,'sumx3',S3) print('C2',D2,'C3',D3) for X in list(u)[:3]: print(X) PY