bad=0 for X in Z: if len(set(X))!=50:bad+=1 for i in range(50): for j in range(i+1,50): if (X[i]+X[j])%p not in Sset:bad+=1 print('bad',bad,'Z',len(Z)) import random best=0 new=0 for it in range(30000): x=random.randrange(p) C=[(u-x)%p for u in U if (u-x)%p!=x] X=[x] while C: y=random.choice(C) X.append(y) C=[z for z in C if z!=y and (y+z)%p in Sset] if len(X)>best: best=len(X) print('best',best,flush=True) if len(X)==50: T=tuple(sorted(X)) if T not in Z:new+=1 print('randombest',best,'new',new)