#include <iostream>
#include <algorithm>
using namespace std;
#define ull unsigned long long
const int N = 5e6 + 10;
const ull mod = 9223372036854775808;
int n;
ull ans = 0;
struct node {
ull x;
ull y;
int idx;
}query[N];
ull fx[N];
bool cmp1(node a, node b) {
return a.x < b.x;
}
bool cmp2(node a, node b) {
return a.idx < b.idx;
}
int main() {
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> query[i].x >> query[i].y;
query[i].idx = i;
}
sort(query + 1, query + n + 1, cmp1);
ull temp = query[1].x;
query[1].x = 1;
for (int i = 2; i <= n; i++) {
if (query[i].x == temp) {
query[i].x = query[i - 1].x;
}
else {
temp = query[i].x;
query[i].x = query[i - 1].x + 1;
}
}
sort(query + 1, query + n + 1, cmp2);
for (int i = 1; i <= n; i++) {
int idx = query[i].x;
ull y = query[i].y;
ans = (ans + (fx[idx] * i) % mod) % mod;
fx[idx] = y;
}
ans %= mod;
printf("%lld\n", ans);
}