#include<bits/stdc++.h>
using namespace std;
int a[21][21];
int dirx[]={0,1,-1,0,0};
int diry[]={0,0,0,1,-1};
int fa[1100000],f[1100000];
map<pair<int,int>,int> m;
int getfa(int x){
if(fa[x]==x){
return x;
}
return fa[x]=getfa(fa[x]);
}
int del(int x){
int ans=0;
for(int i=1;i<=19;i++){
for(int j=1;j<=19;j++){
if(fa[m[make_pair(i,j)]]==x){
ans++;
a[i][j]=0;
f[m[make_pair(i,j)]]=0;
fa[m[make_pair(i,j)]]=m[make_pair(i,j)];
m[make_pair(i,j)]=0;
for(int k=1;k<=4;k++){
int dx=i+dirx[k];
int dy=j+diry[k];
if(dx<=0 or dx>=20 or dy<=0 or dy>=20){
continue;
}
f[getfa(m[make_pair(dx,dy)])]++;
}
}
}
}
return ans;
}
int main(){
int mm;
cin>>mm;
for(int i=1;i<=mm;i++){
fa[i]=i;
}
for(int i=1;i<=mm;i++){
int x,y,ans[3]={};
cin>>x>>y;
m[make_pair(x,y)]=i;
int opt=(i&1);
opt++;
a[x][y]=opt;
f[i]=4;
for(int j=1;j<=4;j++){
int dx=x+dirx[j];
int dy=y+diry[j];
if(dx<=0 or dx>=20 or dy<=0 or dy>=20){
f[getfa(i)]--;
continue;
}
if(a[dx][dy]==0){
continue;
}
if(a[dx][dy]!=opt){
int temp=(--f[getfa(m[make_pair(dx,dy)])]);
f[getfa(i)]--;
if(temp==0){
int tt=a[dx][dy];
ans[tt]+=del(getfa(m[make_pair(dx,dy)]));
}
}else{
int fax=getfa(i);
int fay=getfa(m[make_pair(dx,dy)]);
f[fax]--;
if(fax==fay){
continue;
}
f[fay]+=f[fax]-1;
fa[fax]=fay;
}
}
if(f[getfa(i)]==0){
ans[opt]+=del(getfa(i));
}
cout<<ans[2]<<" "<<ans[1]<<'\n';
}
return 0;
}