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

#include<set>

#include<map>

#include<vector>

#include<algorithm>

using namespace std;

const int MAXN=100005;



int H,W,N;

set<pair<int,int> > ans[10],blk;

pair<int,int> P[MAXN];



int Count(pair<int,int> R)

{

	int cnt=0;

	for(int i=R.first;i<R.first+3;i++)

		for(int j=R.second;j<R.second+3;j++)

			cnt+=blk.count(make_pair(i,j));

	return cnt;

}



int main()

{

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

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

	{

		scanf("%d%d",&P[i].first,&P[i].second);

		if(!blk.count(P[i]))

			blk.insert(P[i]);

	}

	

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

	{

		for(int x=max(P[i].first-2,1);x<=P[i].first&&x+2<=H;x++)

			for(int y=max(P[i].second-2,1);y<=P[i].second&&y+2<=W;y++)

			{

				pair<int,int> r=make_pair(x,y);

				int c=Count(r);

				ans[c].insert(r);

			}

	}

	long long ans0=(1LL*(W-2)*(H-2));

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

		ans0-=ans[i].size();

	printf("%lld\n",ans0);

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

		printf("%u\n",ans[i].size());

	

	return 0;

}