void main()
{
    long[] nmq = rdRow;
    long n = nmq[0], m = nmq[1], q = nmq[2];

    long[][] lists = new long[][](n+1, n+1);
    foreach (i; 0 .. m)
    {
        long[] tmp = rdRow;
        long l = tmp[0], r = tmp[1];
        ++lists[l][r];
    }

    foreach (i; 1 .. n+1)
    {
        foreach (j; 1 .. n+1)
        {
            lists[i][j] += lists[i-1][j];
        }
    }
    foreach (i; 1 .. n+1)
    {
        foreach (j; 1 .. n+1)
        {
            lists[i][j] += lists[i][j-1];
        }
    }

    foreach (i; 0 .. q)
    {
        long[] tmp = rdRow;
        long a = tmp[0], b = tmp[1];
        writeln(lists[b][b] - lists[b][a-1] - lists[a-1][b] + lists[a-1][a-1]);
    }
}

T rdElem(T = long)()
{
    //import std.stdio : readln;
    //import std.string : chomp;
    //import std.conv : to;

    return readln.chomp.to!T;
}

alias rdStr = rdElem!string;

dchar[] rdDchar()
{
    //import std.conv : to;

    return rdStr.to!(dchar[]);
}

T[] rdRow(T = long)()
{
    //import std.stdio : readln;
    //import std.array : split;
    //import std.conv : to;

    return readln.split.to!(T[]);
}

T[] rdCol(T = long)(long col)
{
    //import std.range : iota;
    //import std.algorithm : map;
    //import std.array : array;

    return iota(col).map!(x => rdElem!T).array;
}

T[][] rdMat(T = long)(long col)
{
    //import std.range : iota;
    //import std.algorithm : map;
    //import std.array : array;

    return iota(col).map!(x => rdRow!T).array;
}

void wrMat(T = long)(T[][] mat)
{
    //import std.stdio : write, writeln;

    foreach (row; mat)
    {
        foreach (j, compo; row)
        {
            compo.write;
            if (j == row.length - 1) writeln;
            else " ".write;
        }
    }
}

import std.stdio;
import std.string;
import std.array;
import std.conv;
import std.algorithm;
import std.range;
import std.math;
import std.numeric;
import std.container;
import std.typecons;
import std.ascii;
import std.uni;