#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;
}