Z=set() NN=0 iv=(p+1)//2 for Y in C: pm=Y[0]+Y[1] px=Y[-2]+Y[-1] o=[k for k in range(3) if k!=i] for j,(jl,jr) in enumerate(I): for tv in range(px-jr,pm-jl+1): t=tv%p if t in Y:continue B=rng(Y,t,I[o[0]])+rng(Y,t,I[o[1]]) x0=t*iv%p for b0,b1 in B: for b in range(b0,b1+1): if b==t:continue S=list(Y)+[b] X=tuple(sorted([x0]+[(u-x0)%p for u in S])) if len(set(X))==50: Z.add(X) NN+=1 print('src',i,len(Z),NN,time.time()-T0,flush=True) print('TOTAL',len(Z))