rt
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 3010
ll n;
int a[MAXN][MAXN][6];
ll ans;
ll add_te(ll x,ll y)
{
a[x][y][0]=1;
a[x][y-1][3]=1;
a[x][y-1][5]++;
a[x][y+1][1]=1;
a[x][y+1][5]++;
a[x-1][y][4]=1;
a[x-1][y][5]++;
a[x+1][y][2]=1;
a[x+1][y][5]++;
}
ll add_fe(ll x,ll y)
{
a[x][y][0]=2;
a[x][y-1][3]=1;
a[x][y-1][5]++;
a[x][y+1][1]=1;
a[x][y+1][5]++;
a[x-1][y][4]=1;
a[x-1][y][5]++;
a[x+1][y][2]=1;
a[x+1][y][5]++;
}
ll dfs(ll x,ll y)
{
if(a[x][y][5]==3)
{
if(a[x][y][1]==0)
{
ans++;
add_fe(x,y-1);
dfs(x,y-1);
}
if(a[x][y][2]==0)
{
ans++;
add_fe(x-1,y);
dfs(x-1,y);
}
if(a[x][y][3]==0)
{
ans++;
add_fe(x,y+1);
dfs(x,y+1);
}
if(a[x][y][4]==0)
{
ans++;
add_fe(x+1,y);
dfs(x+1,y);
}
}
if(a[x-1][y][0]!=0&&a[x-1][y][5]==3) dfs(x-1,y);
if(a[x+1][y][0]!=0&&a[x+1][y][5]==3) dfs(x+1,y);
if(a[x][y-1][0]!=0&&a[x][y-1][5]==3) dfs(x,y-1);
if(a[x][y+1][0]!=0&&a[x][y+1][5]==3) dfs(x,y+1);
}
signed main()
{
// freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
cin>>n;
ll x,y;
for(ll i=1;i<=n;i++)
{
cin>>x>>y;
x+=1000;
y+=1000;
if(a[y][x][0]==2)
{
ans--;
cout<<ans<<endl;
a[y][x][0]=1;
continue;
}
add_te(y,x);
dfs(y,x);
cout<<ans<<endl;
}
return 0;
//QAQ
}