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=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) 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): 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=tuple([a]+ys+[b]) ok=True for i1 in range(50): for j1 in range(i1+1,50): 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.add(X) print('Ncliques',len(sol)) print('distinct interiors',len(set(X[1:-1] for X in sol))) print('distinct a,b',len(set((X[0],X[-1]) for X in sol))) C2=C3=0 S2=S3=0 for X in sol: for x in X: S2=(S2+x*x)%983 S3=(S3+x*x*x)%983 aa=(d*x)%p C2=(C2+aa*aa)%983 C3=(C3+aa*aa*aa)%983 print('C2,C3',C2,C3,'S2,S3',S2,S3) X=list(sol)[0] orig=[(d*x)%p for x in X] print('example X',X) print('orig',orig) bad=0 for i in range(50): for j in range(i+1,50): aa=orig[i]; bb=orig[j] lam=(g*(aa+bb)+123801)%p if not(146517<=lam<=146611 or 521496<=lam<=521588 or 855093<=lam<=855186): bad+=1 print('badlambda',bad) PY