#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int M = 6;
const int MAX=1006;
int a[M];//存放每个得分的选址个数
struct Node{
int x;
int y;
}b[MAX];
int main(void)
{
int n;
cin >> n;
for(int i=0; i<n; i++){
cin >> b[i].x;
cin >> b[i].y;
}
for(int i=0; i<n; i++){
int cnt = 0;
int sun = 0;
for(int j=0; j<n; j++){
if(b[j].x == b[i].x && b[j].y == b[i].y+1){
cnt++;//右
}else if(b[j].x == b[i].x && b[j].y == b[i].y-1){
cnt++;//左
}else if(b[j].x == b[i].x+1 && b[j].y == b[i].y){
cnt++;//上
}else if(b[j].x == b[i].x-1 && b[j].y == b[i].y){
cnt++;//下
}else if(b[j].x == b[i].x+1 && b[j].y == b[i].y+1){
sun++;//右下
}else if(b[j].x == b[i].x+1 && b[j].y == b[i].y-1){
sun++;//右上
}else if(b[j].x == b[i].x-1 && b[j].y == b[i].y+1){
sun++;//左下
}else if(b[j].x == b[i].x-1 && b[j].y == b[i].y-1){
sun++;//左上
}
}
if(cnt == 4){//找到垃圾点,开始计算评分
if(sun == 0){
a[0]++;
}else if(sun == 1){
a[1]++;
}else if(sun == 2){
a[2]++;
}else if(sun ==3){
a[3]++;
}else if(sun == 4){
a[4]++;
}
}
}
cout << a[0] << endl;
cout << a[1] << endl;
cout << a[2] << endl;
cout << a[3] << endl;
cout << a[4] << endl;
return 0;
}
100分