#include <bits/stdc++.h>
typedef long long ll;
struct P {
ll x, y;
void read(std::map <ll, ll>& mx, std::map <ll, ll>& my) {
std::cin >> x >> y;
bool existX = mx.find(x) == mx.end(), existY = my.find(y) == my.end();
mx[x]++, my[y]++;
mx[x] -= existX, my[y] -= existY;
}
};
int main() {
std::ios::sync_with_stdio(0); std::cin.tie(0);
int n; std::cin >> n;
ll ans = 0;
std::map <ll, ll> mx, my;
std::vector <P> a(n);
for (auto& p : a) p.read(mx, my);
while (n--) ans += mx[a[n].x] * my[a[n].y];
std::cout << ans << "\n";
//std::cout.flush(); std::cin >> n;
}