#!/usr/bin/env python3 import random,time p=996979 U=[] for l,r in [(22716,22810),(397695,397787),(731292,731385)]: U.extend(range(l,r+1)) S=set(U) def nb(x): return [(u-x)%p for u in U if (u-x)%p!=x] best=[] t0=time.time() for it in range(20000): x=random.randrange(p) C=nb(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 S] if len(X)>len(best): best=X[:] print(len(best),best,flush=True) print('final',len(best),best,'time',time.time()-t0)