/* 求最多的正方形个数 dfs深搜对角线 */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n,s; struct Node { int x,y; bool operator < (const Node &a) const { return x<a.x|| (x==a.x)&&(y<a.y); } }a[130]; bool f[130]; void dfs (int ans) { if(ans>s) s=ans; for(int i=0;i<n;i++) { if(!f[i]) { for(int j=i+1;j<n;j++) { if( !f[j] && a[i].x!=a[j].x && a[i].y!=a[j].y) { if(a[i].x-a[j].x != a[i].y-a[j].y) continue; //确定正方形 int t1=-1,t2=-1,tx,ty,k; tx=a[i].x; ty=a[j].y; for(k=0;k<n;k++) if(!f[k] && k!=i && k!=j && a[k].x==tx && a[k].y==ty) {t1=k;break;} if(k>=n) continue; tx=a[j].x; ty=a[i].y; for(k=0;k<n;k++) if(!f[k] && k!=i && k!=j && a[k].x==tx && a[k].y==ty) {t2=k;break;} if(k>=n) continue; f[i]=true; f[j]=true; f[t1]=true; f[t2]=true; dfs(ans+1); f[i]=false; f[j]=false; f[t1]=false; f[t2]=false; } } } } } int main() { while (scanf("%d",&n),n!=-1) { int x,y; memset(f,0,sizeof(f)); for(int i=0;i<n;i++) scanf("%d %d",&a[i].x,&a[i].y); sort(a,a+n); s=0; dfs (0); printf("%d\n",s*4); } return 0; }