#include <bits/stdc++.h>
using namespace std;
using ll = long long;
static uint64_t x = 1234;
static uint64_t gen() {
uint64_t z = (x += 0x9e3779b97f4a7c15);
z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9;
z = (z ^ (z >> 27)) * 0x94d049bb133111eb;
return z ^ (z >> 31);
}
template<int n>
struct Node {
int val;
Node<n> *lc, *rc;
Node(int l = 0, int r = n) : val(0) {
if (r - l > 1) {
int m = (l + r) / 2;
lc = new Node(l, m), rc = new Node(m, r);
}
}
void upd(int i, int x, int l = 0, int r = n) {
if (r - l == 1) { val = x; return; }
int m = (l + r) / 2;
if (i < m) lc->upd(i, x, l, m);
else rc->upd(i, x, m, r);
}
int query(int lo, int hi, int l = 0, int r = n) {
if (lo >= r || hi <= l) return INT_MAX;
if (lo <= l && r <= hi) return val;
int m = (l + r) / 2;
return min(lc->query(lo, hi, l, m), rc->query(lo, hi, m, r));
}
};
int main() {
cin.tie(0)->sync_with_stdio(0);
const int n = 1 << 20, q = 1 << 20;
Node<n> seg;
ll res = 0;
for (int _ = q; _--;) {
int i = gen() % n, x = gen() % ((int) 1e9);
seg.upd(i, x);
int l = gen() % (n + 1), r = gen() % (n + 1);
if (l > r) swap(l, r);
res += seg.query(l, r);
}
cout << res << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCnN0YXRpYyB1aW50NjRfdCB4ID0gMTIzNDsKc3RhdGljIHVpbnQ2NF90IGdlbigpIHsKICAgIHVpbnQ2NF90IHogPSAoeCArPSAweDllMzc3OWI5N2Y0YTdjMTUpOwogICAgeiA9ICh6IF4gKHogPj4gMzApKSAqIDB4YmY1ODQ3NmQxY2U0ZTViOTsKICAgIHogPSAoeiBeICh6ID4+IDI3KSkgKiAweDk0ZDA0OWJiMTMzMTExZWI7CiAgICByZXR1cm4geiBeICh6ID4+IDMxKTsKfQoKdGVtcGxhdGU8aW50IG4+CnN0cnVjdCBOb2RlIHsKICAgIGludCB2YWw7CiAgICBOb2RlPG4+ICpsYywgKnJjOwogICAgTm9kZShpbnQgbCA9IDAsIGludCByID0gbikgOiB2YWwoMCkgewogICAgICAgIGlmIChyIC0gbCA+IDEpIHsKICAgICAgICAgICAgaW50IG0gPSAobCArIHIpIC8gMjsKICAgICAgICAgICAgbGMgPSBuZXcgTm9kZShsLCBtKSwgcmMgPSBuZXcgTm9kZShtLCByKTsKICAgICAgICB9IAogICAgfQogICAgdm9pZCB1cGQoaW50IGksIGludCB4LCBpbnQgbCA9IDAsIGludCByID0gbikgIHsKICAgICAgICBpZiAociAtIGwgPT0gMSkgeyB2YWwgPSB4OyByZXR1cm47IH0KICAgICAgICBpbnQgbSA9IChsICsgcikgLyAyOwogICAgICAgIGlmIChpIDwgbSkgbGMtPnVwZChpLCB4LCBsLCBtKTsKICAgICAgICBlbHNlIHJjLT51cGQoaSwgeCwgbSwgcik7CiAgICB9CiAgICBpbnQgcXVlcnkoaW50IGxvLCBpbnQgaGksIGludCBsID0gMCwgaW50IHIgPSBuKSB7CiAgICAgICAgaWYgKGxvID49IHIgfHwgaGkgPD0gbCkgcmV0dXJuIElOVF9NQVg7CiAgICAgICAgaWYgKGxvIDw9IGwgJiYgciA8PSBoaSkgcmV0dXJuIHZhbDsKICAgICAgICBpbnQgbSA9IChsICsgcikgLyAyOwogICAgICAgIHJldHVybiBtaW4obGMtPnF1ZXJ5KGxvLCBoaSwgbCwgbSksIHJjLT5xdWVyeShsbywgaGksIG0sIHIpKTsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgY2luLnRpZSgwKS0+c3luY193aXRoX3N0ZGlvKDApOwogICAgCiAgICBjb25zdCBpbnQgbiA9IDEgPDwgMjAsIHEgPSAxIDw8IDIwOwogICAgTm9kZTxuPiBzZWc7CiAgICBsbCByZXMgPSAwOwogICAgZm9yIChpbnQgXyA9IHE7IF8tLTspIHsKICAgICAgICBpbnQgaSA9IGdlbigpICUgbiwgeCA9IGdlbigpICUgKChpbnQpIDFlOSk7CiAgICAgICAgc2VnLnVwZChpLCB4KTsKICAgICAgICBpbnQgbCA9IGdlbigpICUgKG4gKyAxKSwgciA9IGdlbigpICUgKG4gKyAxKTsKICAgICAgICBpZiAobCA+IHIpIHN3YXAobCwgcik7CiAgICAgICAgcmVzICs9IHNlZy5xdWVyeShsLCByKTsKICAgIH0KICAgIGNvdXQgPDwgcmVzIDw8ICdcbic7Cn0=