/*
//A
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <random>
#include <cassert>
using namespace std;
#define LL long long
#undef INT_MIN
#undef INT_MAX
#define INT_MIN -2147483648
#define INT_MAX 2147483647
#define LL_MIN -9223372036854775808
#define LL_MAX 9223372036854775807
#define segment_size 65536
#define ROOP() while(true)

int main() {
	int A, B;
	cin >> A >> B;
	cout << A * B - A - B + 1 << endl;
	return 0;
}
*/

/*
//B
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <random>
#include <cassert>
using namespace std;
#define LL long long
#undef INT_MIN
#undef INT_MAX
#define INT_MIN -2147483648
#define INT_MAX 2147483647
#define LL_MIN -9223372036854775808
#define LL_MAX 9223372036854775807
#define segment_size 65536
#define ROOP() while(true)

int main() {
	int N;
	cin >> N;
	int ans = 0;
	for (int i = 1; i <= N; i++) {
		if (i % 2 == 0) continue;
		int tmp = 0;
		for (int j = 1; j <= i; j++) {
			if (i % j == 0) tmp++;
		}
		if (tmp == 8) ans++;
	}
	cout << ans << endl;
	
	return 0;
}
*/

/*
//C
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <random>
#include <cassert>
using namespace std;
#define LL long long
#undef INT_MIN
#undef INT_MAX
#define INT_MIN -2147483648
#define INT_MAX 2147483647
#define LL_MIN -9223372036854775808
#define LL_MAX 9223372036854775807
#define segment_size 65536
#define ROOP() while(true)

int main() {
	string S;
	cin >> S;
	long long K;
	cin >> K;
	for (long long i = 0; i < S.size(); i++) {
		if (S[i] != '1') {
			cout << S[i] << endl;
			return 0;
		}
		if (i == K-1) {
			cout << 1 << endl;
			return 0;
		}
	}

	return 0;
}
*/


//D
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <set>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <random>
#include <cassert>
using namespace std;
#define LL long long
#undef INT_MIN
#undef INT_MAX
#define INT_MIN -2147483648
#define INT_MAX 2147483647
#define LL_MIN -9223372036854775808
#define LL_MAX 9223372036854775807
#define segment_size 65536
#define ROOP() while(true)
int N, M, Q;
int L[200000];
int R[200000];
vector<int> city[501];

int dp[501][501];
int solve(int p, int q) {
	if (dp[p][q] != -1) return dp[p][q];
	int ans = 0;
	for (int i = 0; i < city[p].size(); i++) {
		if (R[city[p][i]] <= q) ans++;
	}
	if (p == q) {
		dp[p][q] = ans;
		return ans;
	}
	else {
		ans += solve(p+1,q);
		dp[p][q] = ans;
		return ans;
	}
}

int main() {
	iostream::sync_with_stdio(false);
	cin >> N >> M >> Q;

	for (int i = 0; i <= N; i++) {
		for (int j = 0; j <= N; j++) {
			dp[i][j] = -1;
		}
	}
	
	for (int i = 0; i < M; i++) {
		cin >> L[i] >> R[i];
		city[L[i]].push_back(i);
	}
	for (int i = 0; i < Q; i++) {
		int p, q;
		cin >> p >> q;
		cout << solve(p,q) << endl;
	}
	

	return 0;
}


Measured memory_bytes: 4736