typedefunsigneduint;constint MAXN =4e6+10;constuint mask =0x5f3759dfu;uint seed, lst;inlineuintrnd(){
seed ^= lst ^ mask;
seed ^= seed <<13;
seed ^= seed >>7;
seed ^= seed <<17;
seed ^= lst ^ mask;return seed;}int n, m;uint a[MAXN];intmain(){scanf("%d%d%u",&n,&m,&seed);for(int i =1; i <= n; i++) a[i]=rnd();for(int i =1; i <= m; i++){uint op =rnd()&1, l =rnd()% n +1, r =rnd()% n +1;if(l > r)swap(l, r);if(op){uint k =rnd()%(r - l +1)+1;// do sth...
}else{uint k =rnd();// do sth...
}}}