import std.stdio, std.conv, std.string, std.array, std.range, std.algorithm, std.container;
import std.math, std.random, std.bigint, std.datetime, std.format;
void main(string[] args){ if(args.length > 1) if(args[1] == "-debug") DEBUG = 1; solve(); }
void log()(){ writeln(""); } void log(T, A ...)(T t, lazy A a){ if(DEBUG) write(t, " "), log(a); } bool DEBUG = 0;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }
T rtype(T)(){ return read.to!T; } alias rint = rtype!int, rlong = rtype!long, rreal = rtype!real;
T[] rtypes(T)(int n){ return n.iota.map!(i => rtype!T()).array; } alias rint = rtypes!int, rlong = rtypes!long, rreal = rtype!real;
// ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- //
void solve(){
	int n = rint, m = rint, q = rint;
	
	long[][] cf = new long[][](n, n);
	foreach(_; 0 .. m){
		int l = rint - 1, r = rint - 1;
		cf[l][r] += 1;
	}
	log("cf:", cf);
	
	long[][] sf = new long[][](n, n);
	foreach(i; 0 .. n) foreach(j; 0 .. n){
		sf[i][j] += cf[i][j];
		if(i > 0) sf[i][j] += sf[i - 1][j];
		if(j > 0) sf[i][j] += sf[i][j - 1];
		if(i > 0 && j > 0) sf[i][j] -= sf[i - 1][j - 1];
	}
	log("sf:", sf);
	
	foreach(_; 0 .. q){
		int l = rint - 1, r = rint - 1;
		long ans = sf[r][r];
		if(l > 0) ans -= sf[l - 1][r];
		ans.writeln;
	}
	
	
	
}
