// Slower C++ solution:
/*  ***  In The Name of God ... ***  */ 

#include <bits/stdc++.h>

 

using namespace std;

 

typedef long long ll;

typedef long double ld;

 

 

#define int long long

#define all(v) v.begin() , v.end()



template<typename T> inline bool smin(T &a, const T &b){ return b < a ? a = b,1:0;}

template<typename T> inline bool smax(T &a, const T &b){ return a < b ? a = b,1:0;}



int n , m , q , res [ 10 ] ;

map < pair < int , int > , bool > mark ;

vector < pair < int , int > > vc ; 



bool val ( int x , int y ) {

	return x > 0 && y > 0 && x <= n && y <= m ; 

}



void add ( int x , int y ) {

	bool isok = 1 ; 

	int cnt = 0 ; 

	for ( int i = x ; i <= x + 2 ; ++ i ) {

		for ( int j = y ; j <= y + 2 ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ; 

	for ( int i = x - 1 ; i <= x + 1 ; ++ i ) {

		for ( int j = y ; j <= y + 2 ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	} 

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ;

	for ( int i = x - 2 ; i <= x  ; ++ i ) {

		for ( int j = y ; j <= y + 2 ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ;

	for ( int i = x ; i <= x + 2 ; ++ i ) {

		for ( int j = y - 1 ; j <= y + 1 ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ;

	for ( int i = x - 1 ; i <= x + 1 ; ++ i ) {

		for ( int j = y - 1 ; j <= y + 1 ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ; 

	for ( int i = x - 2 ; i <= x ; ++ i ) {

		for ( int j = y - 1 ; j <= y + 1 ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ;

	for ( int i = x ; i <= x + 2 ; ++ i ) {

		for ( int j = y - 2 ; j <= y ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ;

	for ( int i = x - 1 ; i <= x + 1 ; ++ i ) {

		for ( int j = y - 2 ; j <= y ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ;

	isok = 1 , cnt = 0 ;

	for ( int i = x - 2 ; i <= x ; ++ i ) {

		for ( int j = y - 2 ; j <= y ; ++ j ) {

			isok &= val ( i , j ) ;

			cnt += mark [ { i , j } ] ; 

		}

	}

	if ( isok )

		++ res [ cnt ] ; 

}



int32_t main()

{

	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

	cin >> n >> m >> q ;

	while ( q -- ) {

		int a , b ;

		cin >> a >> b ;

		vc . push_back ( { a , b } ) ;

		mark [ { a , b } ] = 1 ; 

	}

	for ( auto e : vc )

		add ( e . first , e . second ) ;

	int All = ( n - 2 ) * ( m - 2 ) ;

	for ( int i = 1 ; i < 10 ; ++ i ) {

		res [ i ] /= i ;

		All -= res [ i ] ; 

	}

	cout << All << '\n' ;

	for ( int i = 1 ; i < 10 ; ++ i )

		cout << res [ i ] << '\n' ; 

	cout << '\n' ; 

}




// Faster C++ solution for the same problem (measured speedup: 1.1029355925837996x):
#include<iostream>

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;



typedef long long LL;



LL ans[15], d[10000000], tot = 0;



LL chuli(LL a, LL b)

{

    LL mod = 20000222ll;

    a *= mod;

    b *= 521ll;

    b ++;

    return a + b;

}



int main()

{

    LL h, w, n, a, b;

    cin >> h >> w >> n;

    LL sy = (h-2)*(w-2);

    while (n--)

    {

        scanf("%lld%lld", &a, &b);

        for (LL i = 0; i < 3; i++)

        {

            for (LL j = 0; j < 3; j++)

            {

                if (a - i >= 1 && a - i <= h - 2 && b - j >= 1 && b - j <= w - 2)

                {

                    d[++tot] = chuli((a-i), (b-j));

                }

            }

        }

    }

    sort(d+1, d+tot+1);

    int ls = 1;

    for (int i = 1; i <= tot; i++)

    {

        if (d[i] == d[i+1])

        {

            ls++;

        }

        else

        {

            ans[ls]++;

            ls = 1;

            sy--;

        }

    }

    cout << sy << endl;

    for (int i = 1; i <= 9; i++)

    {

        cout << ans[i] << endl;

    }

    return 0;

}