import qualified Data.Vector.Unboxed as V
import Data.Vector.Unboxed ((!))
import qualified Data.Vector.Unboxed.Mutable as VM
import Data.List
import Control.Monad
import Data.IORef

coordN :: Int -> (Int, Int) -> Int
coordN n (x,y) = x*n+y

main :: IO ()
main = do
  [n,m,q] <- map read . words <$> getLine
  let cd = coordN n
  vecm <- VM.replicate (n*n) 0 :: IO (VM.IOVector Int)
  replicateM_ m $ do
    [x,y] <- map read . words <$> getLine
    VM.modify vecm (+1) $ cd (x-1,y-1)
  forM_ [1..n-1] $ \x -> do
    let slice0 = VM.slice ((x-1)*n) n vecm
        slice1 = VM.slice (x*n) n vecm
    forM_ [0..n-1] $ \y -> do
      val <- VM.read slice0 y
      VM.modify slice1 (val+) y
  forM_ [0..n-1] $ \x -> do
    let slice = VM.slice (x*n) n vecm
    forM_ [1..n-1] $ \y -> do
      val <- VM.read slice (y-1)
      VM.modify slice (val+) y
  vec <- V.unsafeFreeze vecm :: IO (V.Vector Int)
  replicateM_ q $ do
    [x,y] <- map read . words <$> getLine
    putStrLn $ show $ query vec n (x-1) (y-1)

query :: V.Vector Int -> Int -> Int -> Int -> Int
query vec n x y =
  vec ! cd (y,y) - chk (vec ! cd (x-1,y)) - chk (vec ! cd (y,x-1))
  + chk (vec ! cd (x-1,x-1))
 where
   cd = coordN n
   chk = if x <= 0 then const 0 else id