import qualified Data.Map.Strict as Map
import qualified Data.ByteString.Char8 as BS
import Control.Monad
import Data.Maybe

main :: IO ()
main = do
  [h, w, n] <- map read . words <$> getLine
  points <- concat <$> replicateM n (do
    [a, b] <- map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine
    return [(a1, b1) | a1 <- [a-1..a+1], b1 <- [b-1..b+1], a1 > 1, a1 < h, b1 > 1, b1 < w])
  let
    ma = foldl (\m c -> Map.insertWith (+) c 1 m) Map.empty points
    ans = Map.foldl (\m i -> Map.insertWith (+) i 1 m) Map.empty ma
    l = sum ans
  forM_ [0..9] $ \i -> print $ fromMaybe 0 (i `Map.lookup` Map.insert 0 ((h-2) * (w-2) - l) ans)
