#include <bits/stdc++.h>
using namespace std;

int	main()
{
	int	N, M, Q;
	cin >> N >> M >> Q;
	vector<vector<int>>	cnt_vec(N + 1, vector<int>(N + 1, 0));
	int	L, R;
	for (int i = 0; i < M; ++i) {
		cin >> L >> R;
		cnt_vec.at(L).at(R) += 1;
	}
	vector<vector<int>>	cumsum(N + 1, vector<int>(N + 1, 0));
	for (int i = N; i > 0; --i) {
		for (int j = 1; j <= N; ++j) {
			cumsum.at(i).at(j) = cnt_vec.at(i).at(j);
			cumsum.at(i).at(j) += cumsum.at(i).at(j - 1);
			if (i < N) {
				cumsum.at(i).at(j) += cumsum.at(i + 1).at(j);
				cumsum.at(i).at(j) -= cumsum.at(i + 1).at(j - 1);
			}
		}
	}
	int	p, q;
	for (int i = 0; i < Q; ++i) {
		cin >> p >> q;
		cout << cumsum.at(p).at(q)  << endl;
	}
}

#include <cstdio>
using namespace std;
int n,d1,d2,s;
int f[620][620];
void work(int d){
	int p=0;
	while(d%4==0){
		d/=4;
		p++;
	}
	if(d&1){
		for(int i=0;i<2*n;i++)
			for (int j=0;j<2*n;j++)
				if(((i>>p)+(j>>p))&1)
					f[i][j]=1;
	}else{
		for(int i=0;i<2*n;i++)
			for(int j=0;j<2*n;j++)
				if((i>>p)&1)
					f[i][j]=1;
	}
}
int main(){
	scanf("%d%d%d",&n,&d1,&d2);
	work(d1);
	work(d2);
	for(int i=0;i<2*n;i++){
		for(int j=0;j<2*n;j++){
			if(s<n*n && !f[i][j]){
				printf("%d %d\n",i,j);
				s++;
			}
		}
	}
	return 0;
}