// 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.1812790249724632x):
#include<cstdio>

#include<algorithm>

#include<map>

using namespace std;

int n,m,q;

long long ans[15];

map<int,map<int,int> >mp;

int main()

{

	scanf("%d%d%d",&n,&m,&q);

	while(q--)

	{

		int x,y;

		scanf("%d%d",&x,&y);

		for(int i=max(2,x-1);i<=min(n-1,x+1);i++)

			for(int j=max(2,y-1);j<=min(m-1,y+1);j++)

			{

				ans[mp[i][j]]-=1ll;

				mp[i][j]++;

				ans[mp[i][j]]+=1ll;

			}

	}

	ans[0]+=1ll*(n-2)*(m-2);

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

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

}