#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include using namespace std; using namespace atcoder; #define rep(i, n) REP(i, 0, n) #define REP(i, s, e) for (ll i = (s); i < (ll)(e); i++) #define repr(i, n) REPR(i, n, 0) #define REPR(i, s, e) for (ll i = (ll)(s - 1); i >= (ll)(e); i--) #define all(r) r.begin(), r.end() #define rall(r) r.rbegin(), r.rend() typedef long long ll; typedef vector vi; typedef vector vl; template bool chmax(T& a, const U& b) { if (a >= b) return false; a = b; return true; } template bool chmin(T& a, const U& b) { if (a <= b) return false; a = b; return true; } void yes_no(bool f, string yes = "Yes", string no = "No") { cout << (f ? yes : no) << "\n"; } void solve() { ll n, s, x, y, z; cin >> n >> s >> x >> y >> z; const int ma = (int)2e6 + 2; using B = bitset; B a; { vl b(n); b[0] = s; REP(i, 1, n) b[i] = (x * b[i - 1] + y) % z; rep(i, n) a.set(i, b[i] & 1); } int q; cin >> q; rep(qi, q) { int s, t, u, v; cin >> s >> t >> u >> v; --s; --u; // B c = (~B() << s) & (~B() >> (ma - t)); // cout << "C: "; // rep(i, n) cout << c[i]; // cout << '\n'; B b = (~B() << s) & (~B() >> (ma - t)) & a; // cout << "B: "; // rep(i, n) cout << b[i]; // cout << '\n'; if (s < u) { int k = u - s; b <<= k; } else if (s > u) { int k = s - u; b >>= k; } a ^= b; // cout << "A: "; // rep(i, n) cout << a[i]; // cout << '\n'; } rep(i, n) cout << (a[i] ? 'O' : 'E'); cout << '\n'; } int main() { cin.tie(0); ios::sync_with_stdio(false); int t = 1; // cin >> t; rep(ti, t) solve(); return 0; }