// Original C++ solution (slower):
/*  ***  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' ; 

}




// Optimized solution to the same problem (faster):
#include<set>

#include<cstdio>

using namespace std;



const int dir[10][2]={{0,0},{0,-1},{0,-2},{-1,0},{-1,-1},{-1,-2},{-2,0},{-2,-1},{-2,-2}};

#define MAXN 100000

int H,W,N;

long long Ans[10];

int A[MAXN+5],B[MAXN+5];

set<pair<int,int> > S1,S2;



int main(){

    scanf("%d%d%d",&H,&W,&N);

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

        scanf("%d%d",&A[i],&B[i]);

        S1.insert(make_pair(A[i],B[i]));

    }

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

        for(int j=0;j<9;j++){

            int x=A[i]+dir[j][0],y=B[i]+dir[j][1],cnt=0;

            if(x<1||x+2>H||y<1||y+2>W)

                continue;

            if(S2.count(make_pair(x,y)))

                continue;

            S2.insert(make_pair(x,y));

            for(int k=0;k<9;k++)

                cnt+=S1.count(make_pair(x-dir[k][0],y-dir[k][1]));

            Ans[cnt]++;

        }

    }

    long long tot=0;

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

        tot+=Ans[i];

    printf("%lld",(H-2ll)*(W-2ll)-tot);

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

        printf("\n%lld",Ans[i]);

}


// Fastest known solution for this problem: