#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
int N;
struct point{
int x;
int y;
};
point P[1000];
void citire(){
cin >> N;
for(int i=0; i<N; i++)
cin >> P[i].x >> P[i].y;
}
void afisare(){
for(int i=0; i<N; i++)
cout << P[i].x << " " << P[i].y << "\n";
}
int combinari(int n, int k){
if(k == 0)
return 1;
if(k>n)
return 0;
return combinari(n-1, k) + combinari(n-1, k-1);
}
bool sort_x(point A, point B){
return A.x < B.x;
}
bool sort_y(point A, point B){
return A.y < B.y;
}
int calcx(){
int cnt = 0;
for(int i=0; i<N-1; i++){
if(P[i].x == P[i+1].x)
cnt++;
}
return cnt;
}
int calcy(){
int cnt = 0;
for(int i=0; i<N-1; i++){
if(P[i].y == P[i+1].y)
cnt++;
}
return cnt;
}
int main(){
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
citire();
sort(P, P+N, sort_x);
int cx = calcx();
sort(P, P+N, sort_y);
int cy = calcy();
//cout << combinari(5, 2);
cout << combinari(cx, 2) + combinari(cy, 2);
return 0;
}