#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 Segtree {
vector<int> seg;
Segtree() : seg(2 * n) {}
void upd(int j, int x, int i = 1, int l = 0, int r = n) {
if (r - l == 1) { seg[i] = x; return; }
int m = (l + r) / 2;
if (j < m) upd(j, x, 2 * i, l, m);
else upd(j, x, 2 * i + 1, m, r);
seg[i] = min(seg[2 * i], seg[2 * i + 1]);
}
int query(int lo, int hi, int i = 1, int l = 0, int r = n) {
if (lo >= r || hi <= l) return INT_MAX;
if (lo <= l && r <= hi) return seg[i];
int m = (l + r) / 2;
return min(query(lo, hi, 2 * i, l, m),
query(lo, hi, 2 * i + 1, m, r));
}
};
int main() {
cin.tie(0)->sync_with_stdio(0);
const int n = 1 << 20, q = 1 << 20;
Segtree<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+CnN0cnVjdCBTZWd0cmVlIHsKICAgIHZlY3RvcjxpbnQ+IHNlZzsKICAgIFNlZ3RyZWUoKSA6IHNlZygyICogbikge30KICAgIHZvaWQgdXBkKGludCBqLCBpbnQgeCwgaW50IGkgPSAxLCBpbnQgbCA9IDAsIGludCByID0gbikgewogICAgICAgIGlmIChyIC0gbCA9PSAxKSB7IHNlZ1tpXSA9IHg7IHJldHVybjsgfQogICAgICAgIGludCBtID0gKGwgKyByKSAvIDI7CiAgICAgICAgaWYgKGogPCBtKSB1cGQoaiwgeCwgMiAqIGksIGwsIG0pOwogICAgICAgIGVsc2UgdXBkKGosIHgsIDIgKiBpICsgMSwgbSwgcik7CiAgICAgICAgc2VnW2ldID0gbWluKHNlZ1syICogaV0sIHNlZ1syICogaSArIDFdKTsKICAgIH0KICAgIGludCBxdWVyeShpbnQgbG8sIGludCBoaSwgaW50IGkgPSAxLCBpbnQgbCA9IDAsIGludCByID0gbikgewogICAgICAgIGlmIChsbyA+PSByIHx8IGhpIDw9IGwpIHJldHVybiBJTlRfTUFYOwogICAgICAgIGlmIChsbyA8PSBsICYmIHIgPD0gaGkpIHJldHVybiBzZWdbaV07CiAgICAgICAgaW50IG0gPSAobCArIHIpIC8gMjsKICAgICAgICByZXR1cm4gbWluKHF1ZXJ5KGxvLCBoaSwgMiAqIGksIGwsIG0pLAogICAgICAgICAgICBxdWVyeShsbywgaGksIDIgKiBpICsgMSwgbSwgcikpOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBjaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CiAgICAKICAgIGNvbnN0IGludCBuID0gMSA8PCAyMCwgcSA9IDEgPDwgMjA7CiAgICBTZWd0cmVlPG4+IHNlZzsKICAgIGxsIHJlcyA9IDA7CiAgICBmb3IgKGludCBfID0gcTsgXy0tOykgewogICAgICAgIGludCBpID0gZ2VuKCkgJSBuLCB4ID0gZ2VuKCkgJSAoKGludCkgMWU5KTsKICAgICAgICBzZWcudXBkKGksIHgpOwogICAgICAgIGludCBsID0gZ2VuKCkgJSAobiArIDEpLCByID0gZ2VuKCkgJSAobiArIDEpOwogICAgICAgIGlmIChsID4gcikgc3dhcChsLCByKTsKICAgICAgICByZXMgKz0gc2VnLnF1ZXJ5KGwsIHIpOwogICAgfQogICAgY291dCA8PCByZXMgPDwgJ1xuJzsKfQ==