/*
* 绝逼的坑题,坑点就在于一个坐标下可能存在多个地雷
* 这尼玛都不知道出题人是怎么想的,一个位置放多个地雷还炸不死放地雷的小士兵???
* 坑出个翔了!!
* 做法就是贪心,枚举所有的点和所有可能的边,当然还要考虑变长为0的正方形(这尼玛)
*/
#include <cstdio>
#include <cstring>
#define MAXN 120
using namespace std;
int vis[MAXN][MAXN];
bool judge(int x, int y) {
if(x<0 || y<0 || x>100 || y>100)
return false;
if(vis[x][y] > 0)
return true;
return false;
}
int main(void) {
int n, x, y;
while(scanf("%d", &n)!=EOF && n!=-1) {
memset(vis, 0, sizeof(vis));
while(n--) {
scanf("%d%d", &x, &y);
vis[x][y]++;
}
int ans = 0;
for(int i=0; i<=100; ++i) {
for(int j=0; j<=100; ++j) {
ans += vis[i][j] / 4;
vis[i][j] %= 4;
}
}
for(int i=0; i<=100; ++i) {
for(int j=0; j<=100; ++j) {
int tmp = vis[i][j];
while(vis[i][j] > 0 ) {
for(int k=1; k<=100; ++k) {
if(judge(i, j) && judge(i,j+k) && judge(i+k, j) && judge(i+k, j+k)) {
++ans;
vis[i][j]--;
vis[i+k][j]--;
vis[i][j+k]--;
vis[i+k][j+k]--;
}
}
if(vis[i][j] == tmp)
break;
}
}
}
printf("%d\n", ans*4);
}
return 0;
}