#include <bits/stdc++.h>
using namespace std;
int n;
int a[1000001];
int b[1000001];
void sub1()
{
int dem=0;
for(int i=1; i<=n-1; i++)
for(int j=i+1; j<=n; j++)
if (a[i]==a[j] && b[i]!=b[j]) dem++;
cout << dem;
}
map < int, map <int,int> > M;
void sub2()
{
for(int i=1; i<=n; i++)
M[a[i]][b[i]]++;
int kq=0;
for(map < int, map <int,int> > :: iterator it=M.begin(); it!=M.end(); it++)
{
int sl=M[it->first].size();
for(map <int,int> :: iterator itb=M[it->first].begin();
itb!=M[it->first].end(); itb++)
{
int sltrung=M[it->first][itb->first];
kq=kq-sltrung*(sltrung-1)/2;
sl=sl+sltrung-1;
}
kq=kq+sl*(sl-1)/2;
}
cout << kq;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
freopen("CAU1.INP", "r", stdin);
freopen("CAU1.OUT", "w", stdout);
cin >> n;
for(int i=1; i<=n; i++) cin >> a[i] >> b[i];
if (n<1000) sub1();
else sub2();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG47CmludCBhWzEwMDAwMDFdOwppbnQgYlsxMDAwMDAxXTsKCnZvaWQgc3ViMSgpCnsKICAgICAgaW50IGRlbT0wOwogICAgICBmb3IoaW50IGk9MTsgaTw9bi0xOyBpKyspCiAgICAgICBmb3IoaW50IGo9aSsxOyBqPD1uOyBqKyspCiAgICAgIGlmIChhW2ldPT1hW2pdICYmIGJbaV0hPWJbal0pIGRlbSsrOwogICAgICBjb3V0IDw8IGRlbTsKfQoKbWFwIDwgaW50LCBtYXAgPGludCxpbnQ+ID4gTTsKdm9pZCBzdWIyKCkKewogICAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKQogICAgICBNW2FbaV1dW2JbaV1dKys7CgogICAgICBpbnQga3E9MDsKICAgICAgZm9yKG1hcCA8IGludCwgbWFwIDxpbnQsaW50PiA+IDo6IGl0ZXJhdG9yIGl0PU0uYmVnaW4oKTsgaXQhPU0uZW5kKCk7IGl0KyspCiAgICAgIHsKICAgICAgICAgICAgaW50IHNsPU1baXQtPmZpcnN0XS5zaXplKCk7CiAgICAgICAgICAgIGZvcihtYXAgPGludCxpbnQ+IDo6IGl0ZXJhdG9yIGl0Yj1NW2l0LT5maXJzdF0uYmVnaW4oKTsKICAgICAgICAgICAgaXRiIT1NW2l0LT5maXJzdF0uZW5kKCk7IGl0YisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGludCBzbHRydW5nPU1baXQtPmZpcnN0XVtpdGItPmZpcnN0XTsKICAgICAgICAgICAgICAgICAga3E9a3Etc2x0cnVuZyooc2x0cnVuZy0xKS8yOwogICAgICAgICAgICAgICAgICBzbD1zbCtzbHRydW5nLTE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAga3E9a3Erc2wqKHNsLTEpLzI7CiAgICAgIH0KCiAgICAgIGNvdXQgPDwga3E7Cn0KCmludCBtYWluKCkKewogICAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgICAgY2luLnRpZSgwKTsKICAgICAgZnJlb3BlbigiQ0FVMS5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgZnJlb3BlbigiQ0FVMS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICAgIGNpbiA+PiBuOwogICAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKSBjaW4gPj4gYVtpXSA+PiBiW2ldOwogICAgICBpZiAobjwxMDAwKSBzdWIxKCk7CiAgICAgIGVsc2Ugc3ViMigpOwogICAgICByZXR1cm4gMDsKfQ==