#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<pair<int, int>, int> > v1, v2;
void wczytaj() {
  scanf("%d", &n);
  v1.resize(n);
  v2.resize(n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &v1[i].first.first, &v1[i].first.second);
    v2[i].first.first = v1[i].first.second;
    v2[i].first.second = v1[i].first.first;
    v1[i].second = v2[i].second = i;
  }
}
long long licz(vector<pair<pair<int, int>, int> >& v) {
  v.push_back(make_pair(make_pair(2e9, 2e9), 0));
  int co = v[0].first.first, il = 1;
  long long odp = 0;
  for (int i = 1; i <= n; i++)
    if (v[i].first.first == co)
      il++;
    else {
      odp += 1LL * il * (il - 1) / 2;
      co = v[i].first.first;
      il = 1;
    }
  return odp;
}
long long powt() {
  pair<int, int> co = v1[0].first;
  int il = 1;
  long long odp = 0;
  for (int i = 1; i <= n; i++)
    if (v1[i].first == co)
      il++;
    else {
      odp += 1LL * il * (il - 1) / 2;
      co = v1[i].first;
      il = 1;
    }
  return odp;
}
int main() {
  wczytaj();
  sort(v1.begin(), v1.end());
  sort(v2.begin(), v2.end());
  long long odp = licz(v1) + licz(v2) - powt();
  printf("%I64d", odp);
  return 0;
}
