using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;


namespace debug
{
    class Program
    {
        static void Main(string[] args)
        {
            ProgramD a = new ProgramD();
            a.main();

        }
    }

    //ABC096
    class ProgramA
    {
        public void main()
        {
            string[] s = Console.ReadLine().Split(' ');
            int a = int.Parse(s[0]);
            int b = int.Parse(s[1]);

            //(a-1)*(b-1)が答え
            Console.WriteLine((a -1)*(b-1));
        }
    }

    class ProgramB
    {
        public void main()
        {
            int n = int.Parse(Console.ReadLine());

            int ans = 0;
            //奇数の数のうち約数が8このものを探す
            for (int i = 1; i <= n; i = i + 2)
            {
                int count = 0;
                //2つの積での検討（sqrt(i)以下の数で十分）
                for (int j = 1; j <= Math.Sqrt(i);j++)
                {
                    if(i % j == 0)
                    {
                        if (i == j * j)//平方数の場合は1つ
                            count++;
                        else//それ以外は2つ
                            count += 2;
                    }
                }

                //約数が8つの時だけ加算
                if (count == 8)
                    ans++;
            }

            //答え出力
            Console.WriteLine(ans);
            

        }
    }

    class ProgramC
    {
        public void main()
        {
            string s = Console.ReadLine();
            long k = long.Parse(Console.ReadLine());

            int pos = 0;

            //最初に1じゃない位置を特定しておく
            for(int i = 0;i < s.Length;i++)
            {
                if (s[i] != '1')
                {
                    pos = i;
                    break;
                }
            }

            //kが1の続く数のうちであるなら1、そうでないなら最初に出た1以外の数
            if (k - 1 < pos)
                Console.WriteLine("1");
            else
                Console.WriteLine(s[pos]);

        }
    }

    class ProgramD
    {
        public void main()
        {
            string[] s = Console.ReadLine().Split(' ');
            int n = int.Parse(s[0]);
            int m = int.Parse(s[1]);
            int q = int.Parse(s[2]);

            //スタートとゴールの位置を二次元で把握
            int[,] map = new int[n, n];
            for (int i = 0; i < m; i++)
            {
                string[] xi = Console.ReadLine().Split(' ');
                map[int.Parse(xi[0]) - 1, int.Parse(xi[1]) - 1]++;
            }

            //2次元累積和にすることで計算量を削減
            int[,] map_wa = new int[n, n];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                {
                    if (j == 0)
                        map_wa[i, j] = map[i, j];
                    else
                        map_wa[i, j] = map[i, j] + map_wa[i, j - 1];
                }
            //逆もやる
            for (int j = 0; j < n; j++)
                for (int i = 0; i < n; i++)
                {
                    if (i != 0)
                        map_wa[i, j] = map_wa[i, j] + map_wa[i - 1, j];
                }

            //q個のクエリにこたえる
            for (int i = 0; i < q; i++)
            {
                string[] xi = Console.ReadLine().Split(' ');
                int ans = 0;
                //累積和処理によって単ループで済む。
                if (int.Parse(xi[0]) == 1)
                    ans += map_wa[int.Parse(xi[1]) - 1, int.Parse(xi[1]) - 1];
                else
                {
                    ans += map_wa[int.Parse(xi[1]) - 1, int.Parse(xi[1]) - 1];
                    ans += map_wa[int.Parse(xi[0]) - 2, int.Parse(xi[0]) - 2];
                    ans -= map_wa[int.Parse(xi[1]) - 1, int.Parse(xi[0]) - 2];
                    ans -= map_wa[int.Parse(xi[0]) - 2, int.Parse(xi[1]) - 1];
                }
                

                //答え出力
                Console.WriteLine(ans);
            }
        }

    }

    

}


Measured memory_bytes: 47756