import std.algorithm;
import std.array;
import std.conv;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;

T read(T)() { return readln.chomp.to!T; }
T[] reads(T)() { return readln.split.to!(T[]); }
alias readint = read!int;
alias readints = reads!int;

void dump(T)(T[][] g) {
    for (int i = 0; i < g.length; i++) {
        for (int j = 0; j < g[i].length; j++) {
            stderr.write(" ", g[i][j]);
        }
        stderr.writeln();
    }
}

void main() {
    auto nmq = readints;
    int n = nmq[0], m = nmq[1], Q = nmq[2];

    auto g = new int[][](n + 1, n + 1);
    for (int i = 0; i < m; i++) {
        auto lr = readints;
        g[lr[0]][lr[1]]++;
    }
    debug dump(g);

    for (int r = n; r > 0; r--) {
        for (int c = 1; c <= n; c++) {
            g[r][c] += g[r][c - 1];
        }
        if (r < n) {
            for (int c = 1; c <= n; c++) {
                g[r][c] += g[r + 1][c];
            }
        }
    }

    debug { stderr.writeln("-- prepared --"); dump(g); }

    for (int i = 0; i < Q; i++) {
        auto pq = readints;
        int p = pq[0], q = pq[1];

        writeln(g[p][q]);
    }
}
