///****In the name of ALLAH, most Gracious, most Compassionate****//
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
#define ALL(a) a.begin(), a.end()
#define FastIO ios::sync_with_stdio(false); cin.tie(0);cout.tie(0)
#define IN freopen("input.txt","r+",stdin)
#define OUT freopen("output.txt","w+",stdout)
#define DBG(a) cerr<< "line "<<__LINE__ <<" : "<< #a <<" --> "<<(a)<<endl
#define NL cerr<<endl
template < class T1,class T2>
ostream &operator <<(ostream &os,const pair < T1,T2 > &p)
{
os<<"{"<<p.first<<","<<p.second<<"}";
return os;
}
const int N=3e5+5;
const int oo=1e9+7;
int n;
pii a[N];
int32_t main()
{
FastIO;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i].second>>a[i].first;
sort(a,a+n);
vector<int> vs;
for(int i=0;i<n;i++)
{
vs.push_back(a[i].second);
}
sort(ALL(vs));
vs.erase(unique(ALL(vs)),vs.end());
ll ans=0;
for(int i=0;i<n;i++)
{
int j =i;
while(j<n and a[i].first == a[j].first)
j++;
j--;
// [i,j]
// DBG(i);
// DBG(j);
vector<ll> z;
ll last = -1;
for(int k=i;k<=j;k++)
{
int now = lower_bound(ALL(vs),a[k].second) - vs.begin();
z.push_back(now - last-1);
last = now;
}
z.push_back(((ll)vs.size()) - last - 1);
// DBG(&z);
// for(int k: z)
// cerr<<k<<" ";
// NL;
last = z[0]+1;
for(int k=1;k<z.size();k++)
{
ans+= (z[i]+1)*last;
last+=z[k]+1;
}
i=j;
}
cout<<ans<<"\n";
}
Ly8vKioqKkluIHRoZSBuYW1lIG9mIEFMTEFILCBtb3N0IEdyYWNpb3VzLCBtb3N0IENvbXBhc3Npb25hdGUqKioqLy8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpciA8aW50LCBpbnQ+IHBpaTsKCiNkZWZpbmUgQUxMKGEpIGEuYmVnaW4oKSwgYS5lbmQoKQojZGVmaW5lIEZhc3RJTyBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoMCk7Y291dC50aWUoMCkKI2RlZmluZSBJTiBmcmVvcGVuKCJpbnB1dC50eHQiLCJyKyIsc3RkaW4pCiNkZWZpbmUgT1VUIGZyZW9wZW4oIm91dHB1dC50eHQiLCJ3KyIsc3Rkb3V0KQoKI2RlZmluZSBEQkcoYSkgY2Vycjw8ICJsaW5lICI8PF9fTElORV9fIDw8IiA6ICI8PCAjYSA8PCIgLS0+ICI8PChhKTw8ZW5kbAojZGVmaW5lIE5MIGNlcnI8PGVuZGwKCnRlbXBsYXRlIDwgY2xhc3MgVDEsY2xhc3MgVDI+Cm9zdHJlYW0gJm9wZXJhdG9yIDw8KG9zdHJlYW0gJm9zLGNvbnN0IHBhaXIgPCBUMSxUMiA+ICZwKQp7CiAgICBvczw8InsiPDxwLmZpcnN0PDwiLCI8PHAuc2Vjb25kPDwifSI7CiAgICByZXR1cm4gb3M7Cn0KCmNvbnN0IGludCBOPTNlNSs1Owpjb25zdCBpbnQgb289MWU5Kzc7CgppbnQgbjsKcGlpIGFbTl07CgoKaW50MzJfdCBtYWluKCkKewogICAgRmFzdElPOwogICAgY2luPj5uOwoJZm9yKGludCBpPTA7aTxuO2krKykKCQljaW4+PmFbaV0uc2Vjb25kPj5hW2ldLmZpcnN0OwoJc29ydChhLGErbik7Cgl2ZWN0b3I8aW50PiB2czsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJdnMucHVzaF9iYWNrKGFbaV0uc2Vjb25kKTsKCX0KCXNvcnQoQUxMKHZzKSk7Cgl2cy5lcmFzZSh1bmlxdWUoQUxMKHZzKSksdnMuZW5kKCkpOwoKCWxsIGFucz0wOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQlpbnQgaiA9aTsKCQl3aGlsZShqPG4gYW5kIGFbaV0uZmlyc3QgPT0gYVtqXS5maXJzdCkKCQkJaisrOwoJCWotLTsKCQkvLyBbaSxqXQoJCS8vIERCRyhpKTsKCQkvLyBEQkcoaik7CgkJCgkJdmVjdG9yPGxsPiB6OwoJCWxsIGxhc3QgPSAtMTsKCQlmb3IoaW50IGs9aTtrPD1qO2srKykKCQl7CgkJCWludCBub3cgPSBsb3dlcl9ib3VuZChBTEwodnMpLGFba10uc2Vjb25kKSAtIHZzLmJlZ2luKCk7CgkJCXoucHVzaF9iYWNrKG5vdyAtIGxhc3QtMSk7CgkJCWxhc3QgPSBub3c7CgkJfQoJCXoucHVzaF9iYWNrKCgobGwpdnMuc2l6ZSgpKSAtIGxhc3QgLSAxKTsKCQkvLyBEQkcoJnopOwoJCS8vIGZvcihpbnQgazogeikKCQkvLyAJY2Vycjw8azw8IiAiOwoJCS8vIE5MOwoJCWxhc3QgPSB6WzBdKzE7CgkJZm9yKGludCBrPTE7azx6LnNpemUoKTtrKyspCgkJewoJCQlhbnMrPSAoeltpXSsxKSpsYXN0OwoJCQlsYXN0Kz16W2tdKzE7CgkJfQoKCQlpPWo7Cgl9Cgljb3V0PDxhbnM8PCJcbiI7Cn0JCg==