#include <iostream> #include <cstdio> #include <cmath> #include <vector> #include <algorithm> #include <utility> #include <map> #include <queue> #include <set> #include <string> #include <cstring> #include <cassert> #define rf freopen("in.in", "r", stdin) #define wf freopen("out.out", "w", stdout) #define rep(i, s, n) for(int i=int(s); i<=int(n); ++i) using namespace std; const int mx = 1e5+10, mod = 1e9+7; pair<int,int> input_ranges[mx], sorted_input[mx]; int n, q, total = 0; int bit[mx]; void update(int i, int v) { for(; i<mx; i+=i&-i) bit[i]+=v; } int query(int i) { int ret = 0; for(; i; i-=i&-i) ret += bit[i]; return ret; } int main() { //rf;// wf; scanf("%d", &n); for(int i = 1; i<=n; ++i) { int x, y; scanf("%d %d", &x, &y); input_ranges[i] = make_pair(x, y); total = total^((y-x+1)&1); update(x, 1); update(y+1, -1); } scanf("%d", &q); while(q--) { int r, c; scanf("%d %d", &r, &c); int after_rem = total ^ ((input_ranges[r].second-input_ranges[r].first+1)&1); after_rem = after_rem ^ (query(c)&1); if(input_ranges[r].first <= c && input_ranges[r].second >= c) { after_rem ^= 1; } printf(after_rem? "O\n": "E\n"); } return 0; }