#include <iostream> #include <stdlib.h> using namespace std; #define NMAX 100000 typedef struct {int x,y;}Point;int comparex(const void* p1,const void* p2) {return (*(Point*)p1).x-(*(Point*)p2).x;}int comparey(const void* p1,const void* p2) {return (*(Point*)p1).y - (*(Point*)p2).y;}int main(){ int a,c,d,e,f,h,i,j,l,m,n,p,r,s,t,u,v,z,k[NMAX],b[NMAX],o[NMAX],w[NMAX];cin>>n; Point g[n],q[n];for(int i=0;i<n;i++){cin>>g[i].x>>g[i].y;q[i].x=g[i].x;q[i].y=g[i].y;} qsort(g,n,sizeof(Point),comparex);qsort(q,n,sizeof(Point),comparey);i=j=v=0;while(j<n) {while(g[j].x==g[i].x)j++;k[v]=i;b[v]=j-i;v++;if(j>i)qsort(&g[i],j-i, sizeof(Point),comparey);i=j;}i=0;j=0;p=0;while(j<n){while(q[j].y==q[i].y)j++;o[p]=i; w[p]=j-i;p++;if(j>i)qsort(&q[i],j-i,sizeof(Point),comparex); i=j;}c=0;for(m=0;m<p;m++){r=0;for(f=0;f<w[m];f++){z=q[o[m]+f].x;d=q[o[m]+f].y; while(g[k[r]].x<z)r++;if(g[k[r]].x==z&&b[r]>1){int t=0;while(t<b[r]&&g[k[r]+t].y<d)t++; l=e=t;for(a=f+1;a<w[m];a++){if(f==w[m]-1)break;s=q[o[m]+a].x-z;while(e<b[r]-1){e++; u=g[k[r]+e].y-d;if(u==s){c++;break;}if(u>s)break;}while(l>0){l--;u=d-g[k[r]+l].y; if(u==s){c++;break;}if(u>s)break;}}l=e=t;for(h=f-1;h>=0;h--){if(f==0)break; s=z-q[o[m]+h].x;while(e<b[r]-1){e++;u=g[k[r]+e].y-d;if(u==s){c++;break;} if(u>s)break;}while(l>0){l--;u=d-g[k[r]+l].y;if(u==s){c++; break;}if(u>s)break;}}}}}cout<<c;return 0;}