#include <bits/stdc++.h>
using namespace std;
const int G = 1e9 + 1;
unordered_map<int, int> ft;
void gnk(int i) {
  while (i < G) {
    ++ft[i];
    i += (i & -i);
  }
}
int pj(long long i) {
  int dr = 0;
  while (i) {
    dr += ft[i];
    i -= (i & -i);
  }
  return dr;
}
int sj(int l, int r) { return pj(r) - pj(l - 1); }
int n, x, y, s;
unordered_map<int, vector<int> > v;
vector<int> u;
long long fp;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  u.push_back(G);
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    cin >> x >> y;
    u.push_back(y);
    v[y].push_back(x);
  }
  sort(u.begin(), u.end());
  reverse(u.begin(), u.end());
  for (int i = 1; i < u.size(); ++i) {
    if (u[i] != u[i - 1]) {
      sort(v[u[i]].begin(), v[u[i]].end());
      for (int j = 0; j < v[u[i]].size(); ++j) {
        if (pj(v[u[i]][j]) == pj(v[u[i]][j] - 1)) ++s, gnk(v[u[i]][j]);
      }
      for (int j = 0; j < v[u[i]].size(); ++j) {
        fp += 1ll * (sj((j ? v[u[i]][j - 1] + 1 : 1), v[u[i]][j] - 1) + 1) *
              (s - pj(v[u[i]][j]) + 1);
      }
    }
  }
  cout << fp << endl;
  return 0;
}
