import std.stdio;
import std.ascii;
import std.conv;
import std.string;
import std.algorithm;
import std.range;
import std.functional;
import std.math;
import core.bitop;

void main()
{
    auto nmq = readln.chomp.split.to!(long[]);
    long N = nmq[0];
    long M = nmq[1];
    long Q = nmq[2];
    long[] L = new long[](M);
    long[] R = new long[](M);
    long[] Qp = new long[](Q);
    long[] Qq = new long[](Q);

    foreach (i; 0 .. M)
    {
        auto lr = readln.chomp.split.to!(long[]);
        L[i] = lr[0];
        R[i] = lr[1];
    }
    foreach (i; 0 .. Q)
    {
        auto pq = readln.chomp.split.to!(long[]);
        Qp[i] = pq[0];
        Qq[i] = pq[1];
    }

    long[][] table = new long[][](N + 1, N + 1);
    foreach (t; zip(L, R))
        table[t[0]][t[1]]++;
    foreach (i, ref r; table[1 .. $])
        r[] += table[i][];

    // table.writeln;

    foreach (query; zip(Qp, Qq))
    {
        long result;
        foreach (i; query[0] .. query[1] + 1)
        {
            result += table[query[1]][i] - table[query[0] - 1][i];
            // writeln(table[query[1]][i] - table[query[0] - 1][i]);
        }
        result.writeln;
    }
}
