#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);
}
struct Node {
int val, l, r;
Node *lc, *rc;
Node(int l, int r) : l(l), r(r), 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) {
if (r - l == 1) val = x;
else (i < (l + r) / 2 ? lc : rc)->upd(i, x);
}
int query(int lo, int hi) {
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), rc->query(lo, hi));
}
};
int main() {
cin.tie(0)->sync_with_stdio(0);
const int n = 1 << 20, q = 1 << 20;
Node seg(0, n);
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+IDMxKTsKfQoKc3RydWN0IE5vZGUgewogICAgaW50IHZhbCwgbCwgcjsKICAgIE5vZGUgKmxjLCAqcmM7CiAgICBOb2RlKGludCBsLCBpbnQgcikgOiBsKGwpLCByKHIpLCB2YWwoMCkgewogICAgICAgIGlmIChyIC0gbCA+IDEpIHsKICAgICAgICAgICAgaW50IG0gPSAobCArIHIpIC8gMjsKICAgICAgICAgICAgbGMgPSBuZXcgTm9kZShsLCBtKSwgcmMgPSBuZXcgTm9kZShtLCByKTsKICAgICAgICB9CiAgICB9CiAgICB2b2lkIHVwZChpbnQgaSwgaW50IHgpICB7CiAgICAgICAgaWYgKHIgLSBsID09IDEpIHZhbCA9IHg7CiAgICAgICAgZWxzZSAoaSA8IChsICsgcikgLyAyID8gbGMgOiByYyktPnVwZChpLCB4KTsKICAgIH0KICAgIGludCBxdWVyeShpbnQgbG8sIGludCBoaSkgewogICAgICAgIGlmIChsbyA+PSByIHx8IGhpIDw9IGwpIHJldHVybiBJTlRfTUFYOwogICAgICAgIGlmIChsbyA8PSBsICYmIHIgPD0gaGkpIHJldHVybiB2YWw7CiAgICAgICAgaW50IG0gPSAobCArIHIpIC8gMjsKICAgICAgICByZXR1cm4gbWluKGxjLT5xdWVyeShsbywgaGkpLCByYy0+cXVlcnkobG8sIGhpKSk7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIGNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIAogICAgY29uc3QgaW50IG4gPSAxIDw8IDIwLCBxID0gMSA8PCAyMDsKICAgIE5vZGUgc2VnKDAsIG4pOwogICAgbGwgcmVzID0gMDsKICAgIGZvciAoaW50IF8gPSBxOyBfLS07KSB7CiAgICAgICAgaW50IGkgPSBnZW4oKSAlIG4sIHggPSBnZW4oKSAlICgoaW50KSAxZTkpOwogICAgICAgIHNlZy51cGQoaSwgeCk7CiAgICAgICAgaW50IGwgPSBnZW4oKSAlIChuICsgMSksIHIgPSBnZW4oKSAlIChuICsgMSk7CiAgICAgICAgaWYgKGwgPiByKSBzd2FwKGwsIHIpOwogICAgICAgIHJlcyArPSBzZWcucXVlcnkobCwgcik7CiAgICB9CiAgICBjb3V0IDw8IHJlcyA8PCAnXG4nOwp9