#include using namespace std; #define REP(i,a,b) for(i=a;i stB) { if(sb==eb){ if(sa2) b[sb-sa1-1] ^= (a[sb]&(bit[ee]&(bit[64]^bit[se])))<<(64-sa2); b[sb-sa1] ^= (a[sb]&(bit[ee]&(bit[64]^bit[se])))>>sa2; } else { if(sa2) b[sb-sa1-1] ^= (a[sb]&(bit[64]^bit[se]))<<(64-sa2); b[sb-sa1] ^= (a[sb]&(bit[64]^bit[se]))>>sa2; for(i=sb+1;i>sa2; } if(sa2) b[eb-sa1-1] ^= (a[eb]&(bit[ee]))<<(64-sa2); b[eb-sa1] ^= (a[eb]&(bit[ee]))>>sa2; } } else { if(sb==eb){ b[sb-sa1] ^= (a[sb]&(bit[ee]&(bit[64]^bit[se])))>>sa2; if(sa2) b[sb-sa1-1] ^= (a[sb]&(bit[ee]&(bit[64]^bit[se])))<<(64-sa2); } else { b[eb-sa1] ^= (a[eb]&(bit[ee]))>>sa2; if(sa2) b[eb-sa1-1] ^= (a[eb]&(bit[ee]))<<(64-sa2); for(i=eb-1;i>sb;i--){ b[i-sa1] ^= a[i]>>sa2; if(sa2) b[i-sa1-1] ^= a[i]<<(64-sa2); } b[sb-sa1] ^= (a[sb]&(bit[64]^bit[se]))>>sa2; if(sa2) b[sb-sa1-1] ^= (a[sb]&(bit[64]^bit[se]))<<(64-sa2); } } } ll A[2000010], B[2000010]; int arr[2000001]; ull bit[100000]; int N, X, Y, Z, Q; int S, T, U, V, L; char mode[10]; char res[2000100]; int main(){ int i, j, k; scanf("%d%d%d%d%d",&N,&S,&X,&Y,&Z); A[0] = S; REP(i,1,N) A[i] = (A[i-1] * X + Y) % Z; rep(i,N) if(A[i]%2) bit[i/64] |= (1ULL << (i%64)); scanf("%d",&Q); assert(0 <= Q && Q <= 200000); while(Q--){ scanf("%d%d%d%d",&S,&T,&U,&V); S--; U--; L = T-S; bitXOR(bit, bit, S, U, L); } res[N] = '\0'; rep(i,N){ if(bit[i/64]&(1ULL<<(i%64))){ res[i] = 'O'; } else { res[i] = 'E'; } } puts(res); return 0; }