/*  ***  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()
#define pb push_back
#define endl '\n' 
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;}

const int N = 1e5 + 10 ;

int n , h , w , res [ 10 ] ; 
pair < int , int > a [ N ] ;
map < pair < int , int > , bool > mark ;

bool fit ( int x , int y ) {
	return x > 0 && x <= h && y > 0 && y <= w && mark [ { x , y } ] ;  
}

bool ft ( int x , int y ) {
	return x > 0 && x <= h && y > 0 && y <= w ; 
}

void chk ( pair < int , int > p ) {
	/* *..
	   ...
	   ... 
	*/
	int ret = 0 ;
	bool hlp = 1 ;
	for ( int i = 0 ; i < 3 ; i++ ) {
		for ( int j = 0 ; j < 3 ; j++ ) {
			ret += fit ( p . first + i , p . second + j ) ;
			hlp &= ft ( p . first + i , p . second + j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ; 
	/* .*.
	   ...
	   ...
	*/
	for ( int i = 0 ; i < 3  ; i++ ) {
		for ( int j = -1 ; j <= 1 ; j++ ) {
			ret += fit ( p . first + i , p . second + j ) ;
			hlp &= ft ( p . first + i , p . second + j ) ; 
		} 
	}
	if ( hlp ) 
		res [ ret ] ++ ; 
	ret = 0 , hlp = 1  ;
	/* ..*
	   ...
	   ...
	*/
	for ( int i = 0 ; i < 3 ; i++ ) {
		for ( int j = 0 ; j < 3 ; j++ ) {
			ret += fit ( p . first + i , p . second - j ) ;
			hlp &= ft ( p . first + i , p . second - j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ; 
	/*...
	  *..
	  ... */
	for ( int i = -1 ; i <= 1 ; i++ ) {
		for ( int j = 0 ; j < 3 ; j++ ) {
			ret += fit ( p . first + i , p . second + j ) ;
			hlp &= ( ft ( p . first + i , p . second + j ) ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ;
	/*...
	  .*.
	  ... */
	for ( int i = -1 ; i <= 1 ; i++ ) {
		for ( int j = -1 ; j <= 1 ; j++ ) {
			ret += fit ( p . first + i , p . second + j ) ;
			hlp &= ft ( p . first + i , p . second + j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ; 
	/*...
	  ..*
	  ... */
	for ( int i = -1 ; i <= 1 ; i++ ) {
		for ( int j = 0 ; j < 3 ; j++ ) {
			ret += fit ( p . first + i , p . second - j ) ;
			hlp &= ft ( p . first + i , p . second - j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ; 
	/*...
	  ...
	  *.. */
	for ( int i = 0 ; i < 3 ; i++ ) {
		for ( int j = 0 ; j < 3 ; j++ ) {
			ret += fit ( p . first - i , p . second + j ) ;
			hlp &= ft ( p . first - i , p . second + j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ; 
	/*...
	  ...
	  .*. */
	for ( int i = 0 ; i < 3 ; i++ ) {
		for ( int j = -1 ; j <= 1 ; j++ ) {
			ret += fit ( p . first - i , p . second + j ) ;
			hlp &= ft ( p . first - i , p . second + j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	ret = 0 , hlp = 1 ; 
	/*...
	  ...
	  ..* */
	for ( int i = 0 ; i < 3 ; i++ ) {
		for ( int j = 0 ; j < 3 ; j++ ) {
			ret += fit ( p . first - i , p . second - j ) ;
			hlp &= ft ( p . first - i , p . second - j ) ; 
		}
	}
	if ( hlp ) 
		res [ ret ] ++ ;
	return ; 
}

int32_t main()
{
	//ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	cin >> h >> w >> n ;
	for ( int i = 1 ; i <= n ; i++ )
		cin >> a [ i ] . first >> a [ i ] . second , mark [ a [ i ] ] = 1 ;
	for ( int i = 1 ; i <= n ; i++ ) {
		chk ( a [ i ] ) ; 
	}
	int All = ( h - 2 ) * ( w - 2 ) ;
	for ( int i = 1 ; i < 10 ; i++ )
		res [ i ] /= i , All -= ( res [ i ] ) ;
	res [ 0 ] = All ;
	for ( int i = 0 ; i < 10 ; i++ )
		cout << res [ i ] << '\n' ; 
}


Measured memory_bytes: 158080