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 <- replicateM n $ do
    [a, b] <- map (fst . fromJust . BS.readInt) . BS.words <$> BS.getLine
    return (a, b)
  let
    po = do
      (x, y) <- points
      x1 <- [x-1..x+1]
      y1 <- [y-1..y+1]
      guard $ x1 > 1 && x1 < h && y1 > 1 && y1 < w
      return (x1 * 65537 `mod` 1000000007, y1 * 2138121 `mod` 1000000007)
    ma = foldl (\m c -> Map.insertWith (+) c 1 m) Map.empty po
    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)
