/// Author : Nguyễn Thái Sơn - K18 - KHMT - UIT
/// Training ICPC 2024
#include<bits/stdc++.h>
/// #pragma GCC optimize("O3,unroll-loops")
/// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define fi first
#define se second
#define TASK "map"
#define pb push_back
#define EL cout << endl
#define Ti20_ntson int main()
#define in(x) cout << x << endl
#define all(x) (x).begin(),(x).end()
#define getbit(x, i) (((x) >> (i)) & 1)
#define cntbit(x) __builtin_popcount(x)
#define FOR(i,l,r) for (int i = l; i <= r; i++)
#define FORD(i,l,r) for (int i = l; i >= r; i--)
#define Debug(a,n) for (int i = 1; i <= n; i++) cout << a[i] << " "; cout << endl
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> vii;
typedef unsigned long long ull;
typedef vector<vector<int>> vvi;
int fastMax(int x, int y) { return (((y-x)>>(32-1))&(x^y))^y; }
const int N = 5e5 + 5;
const int oo = INT_MAX;
const int mod = 1e9 + 7;
const int d4x[4] = {-1, 0, 1, 0} , d4y[4] = {0, 1, 0, -1};
const int d8x[8] = {-1, -1, 0, 1, 1, 1, 0, -1}, d8y[8] = {0, 1, 1, 1, 0, -1, -1, -1};
int n, a[N], mnL[N], mxL[N], mxR[N], mnR[N];
ll Ans = 0;
inline void Read_Input() {
cin >> n;
FOR(i, 1, n) {
int u, v;
cin >> u >> v;
a[u] = v;
}
}
void DnC(int L, int R) {
if (L > R) return;
if (L == R) {
Ans++;
return;
}
int mid = (L + R) >> 1;
mxL[mid] = a[mid];
mnL[mid] = a[mid];
mxR[mid + 1] = a[mid + 1];
mnR[mid + 1] = a[mid + 1];
FORD(i, mid - 1, L) {
mxL[i] = max(mxL[i + 1], a[i]);
mnL[i] = min(mnL[i + 1], a[i]);
}
FOR(i, mid + 2, R) {
mxR[i] = max(mxR[i - 1], a[i]);
mnR[i] = min(mnR[i - 1], a[i]);
}
/// case 1 : mnL + mxL
FORD(i, mid, L) {
int x = mxL[i] - mnL[i] + i;
if (x > mid && x <= R && mxL[i] > mxR[x] && mnL[i] < mnR[x])
Ans++;
}
/// case 2 : mnR + mxR
FOR(i, mid + 1, R) {
int x = i - mxR[i] + mnR[i];
if (x <= mid && x >= L && mnR[i] < mnL[x] && mxR[i] > mxL[x])
Ans++;
}
/// case 3 : mnL + mxR
set< pair<int, int> > S;
unordered_map<int, int> mp;
for (int i = mid, j = mid + 1; i >= L; i--) {
while (j <= R && mnR[j] >= mnL[i]) {
S.insert({mxR[j], j});
mp[mxR[j] - j]++;
j++;
}
while (S.size() && (*S.begin()).fi < mxL[i]) {
int u = (*S.begin()).se;
S.erase(S.begin());
mp[mxR[u] - u]--;
}
int val = mnL[i] - i;
Ans += mp[val];
}
/// case 4 : mxL + mnR
set<pair<int, int>, greater<pair<int, int>> > T;
mp.clear();
for (int i = mid, j = mid + 1; i >= L; i--) {
while (j <= R && mxR[j] <= mxL[i]) {
T.insert({mnR[j], j});
mp[mnR[j] + j]++;
j++;
}
while (T.size() && (*T.begin()).fi > mnL[i]) {
int u = (*T.begin()).se;
T.erase(T.begin());
mp[mnR[u] + u]--;
}
int val = mxL[i] + i;
Ans += mp[val];
}
DnC(L, mid);
DnC(mid + 1, R);
}
inline void Solve() {
DnC(1, n);
cout << Ans;
}
Ti20_ntson {
freopen(TASK".INP","r",stdin);
freopen(TASK".OUT","w",stdout);
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int T = 1;
// cin >> T;
while (T -- ) {
Read_Input();
Solve();
}
}
Ly8vIEF1dGhvciA6IE5ndXnhu4VuIFRow6FpIFPGoW4gLSBLMTggLSBLSE1UIC0gVUlUCi8vLyBUcmFpbmluZyBJQ1BDIDIwMjQKCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CgovLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCi8vLyAjcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIsbHpjbnQscG9wY250IikKCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBUQVNLICJtYXAiCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgRUwgY291dCA8PCBlbmRsCiNkZWZpbmUgVGkyMF9udHNvbiBpbnQgbWFpbigpCiNkZWZpbmUgaW4oeCkgY291dCA8PCB4IDw8IGVuZGwKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksKHgpLmVuZCgpCiNkZWZpbmUgZ2V0Yml0KHgsIGkpICgoKHgpID4+IChpKSkgJiAxKQojZGVmaW5lIGNudGJpdCh4KSBfX2J1aWx0aW5fcG9wY291bnQoeCkKI2RlZmluZSBGT1IoaSxsLHIpIGZvciAoaW50IGkgPSBsOyBpIDw9IHI7IGkrKykKI2RlZmluZSBGT1JEKGksbCxyKSBmb3IgKGludCBpID0gbDsgaSA+PSByOyBpLS0pCiNkZWZpbmUgRGVidWcoYSxuKSBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNvdXQgPDwgYVtpXSA8PCAiICI7IGNvdXQgPDwgZW5kbAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHBhaXI8aW50LGludD4gdmlpOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CnR5cGVkZWYgdmVjdG9yPHZlY3RvcjxpbnQ+PiB2dmk7CmludCBmYXN0TWF4KGludCB4LCBpbnQgeSkgeyByZXR1cm4gKCgoeS14KT4+KDMyLTEpKSYoeF55KSleeTsgfQoKY29uc3QgaW50IE4gPSA1ZTUgKyA1Owpjb25zdCBpbnQgb28gPSBJTlRfTUFYOwpjb25zdCBpbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IGQ0eFs0XSA9IHstMSwgMCwgMSwgMH0gLCBkNHlbNF0gPSB7MCwgMSwgMCwgLTF9Owpjb25zdCBpbnQgZDh4WzhdID0gey0xLCAtMSwgMCwgMSwgMSwgMSwgMCwgLTF9LCBkOHlbOF0gPSB7MCwgMSwgMSwgMSwgMCwgLTEsIC0xLCAtMX07CgppbnQgbiwgYVtOXSwgbW5MW05dLCBteExbTl0sIG14UltOXSwgbW5SW05dOwpsbCBBbnMgPSAwOwoKaW5saW5lIHZvaWQgUmVhZF9JbnB1dCgpIHsKICAgIGNpbiA+PiBuOwogICAgRk9SKGksIDEsIG4pIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFbdV0gPSB2OwogICAgfQp9Cgp2b2lkIERuQyhpbnQgTCwgaW50IFIpIHsKICAgIGlmIChMID4gUikgcmV0dXJuOwogICAgaWYgKEwgPT0gUikgewogICAgICAgIEFucysrOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpbnQgbWlkID0gKEwgKyBSKSA+PiAxOwoKICAgIG14TFttaWRdID0gYVttaWRdOwogICAgbW5MW21pZF0gPSBhW21pZF07CiAgICBteFJbbWlkICsgMV0gPSBhW21pZCArIDFdOwogICAgbW5SW21pZCArIDFdID0gYVttaWQgKyAxXTsKCiAgICBGT1JEKGksIG1pZCAtIDEsIEwpIHsKICAgICAgICBteExbaV0gPSBtYXgobXhMW2kgKyAxXSwgYVtpXSk7CiAgICAgICAgbW5MW2ldID0gbWluKG1uTFtpICsgMV0sIGFbaV0pOwogICAgfQoKICAgIEZPUihpLCBtaWQgKyAyLCBSKSB7CiAgICAgICAgbXhSW2ldID0gbWF4KG14UltpIC0gMV0sIGFbaV0pOwogICAgICAgIG1uUltpXSA9IG1pbihtblJbaSAtIDFdLCBhW2ldKTsKICAgIH0KCgogICAgLy8vIGNhc2UgMSA6IG1uTCArIG14TAoKICAgIEZPUkQoaSwgbWlkLCBMKSB7CiAgICAgICAgaW50IHggPSBteExbaV0gLSBtbkxbaV0gKyBpOwogICAgICAgIGlmICh4ID4gbWlkICYmIHggPD0gUiAmJiAgbXhMW2ldID4gbXhSW3hdICYmIG1uTFtpXSA8IG1uUlt4XSkKICAgICAgICAgICAgQW5zKys7CiAgICB9CgogICAgLy8vIGNhc2UgMiA6IG1uUiArIG14UgoKCiAgICBGT1IoaSwgbWlkICsgMSwgUikgewoKCiAgICAgICAgaW50IHggPSBpIC0gbXhSW2ldICsgbW5SW2ldOwogICAgICAgIGlmICh4IDw9IG1pZCAmJiB4ID49IEwgJiYgbW5SW2ldIDwgbW5MW3hdICYmIG14UltpXSA+IG14TFt4XSkKICAgICAgICAgICAgQW5zKys7CgogICAgfQoKICAgIC8vLyBjYXNlIDMgOiBtbkwgKyBteFIKCiAgICBzZXQ8IHBhaXI8aW50LCBpbnQ+ID4gUzsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IG1wOwoKICAgIGZvciAoaW50IGkgPSBtaWQsIGogPSBtaWQgKyAxOyBpID49IEw7IGktLSkgewoKICAgICAgICB3aGlsZSAoaiA8PSBSICYmIG1uUltqXSA+PSBtbkxbaV0pIHsKICAgICAgICAgICAgUy5pbnNlcnQoe214UltqXSwgan0pOwogICAgICAgICAgICBtcFtteFJbal0gLSBqXSsrOwogICAgICAgICAgICBqKys7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoUy5zaXplKCkgJiYgKCpTLmJlZ2luKCkpLmZpIDwgbXhMW2ldKSB7CiAgICAgICAgICAgIGludCB1ID0gKCpTLmJlZ2luKCkpLnNlOwogICAgICAgICAgICBTLmVyYXNlKFMuYmVnaW4oKSk7CiAgICAgICAgICAgIG1wW214Ult1XSAtIHVdLS07CiAgICAgICAgfQoKICAgICAgICBpbnQgdmFsID0gbW5MW2ldIC0gaTsKCiAgICAgICAgQW5zICs9IG1wW3ZhbF07CiAgICB9CgoKICAgIC8vLyBjYXNlIDQgOiBteEwgKyBtblIKCiAgICBzZXQ8cGFpcjxpbnQsIGludD4sIGdyZWF0ZXI8cGFpcjxpbnQsIGludD4+ID4gVDsKICAgIG1wLmNsZWFyKCk7CiAgICBmb3IgKGludCBpID0gbWlkLCBqID0gbWlkICsgMTsgaSA+PSBMOyBpLS0pIHsKCiAgICAgICAgd2hpbGUgKGogPD0gUiAmJiBteFJbal0gPD0gbXhMW2ldKSB7CiAgICAgICAgICAgIFQuaW5zZXJ0KHttblJbal0sIGp9KTsKICAgICAgICAgICAgbXBbbW5SW2pdICsgal0rKzsKICAgICAgICAgICAgaisrOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKFQuc2l6ZSgpICYmICgqVC5iZWdpbigpKS5maSA+IG1uTFtpXSkgewogICAgICAgICAgICBpbnQgdSA9ICgqVC5iZWdpbigpKS5zZTsKICAgICAgICAgICAgVC5lcmFzZShULmJlZ2luKCkpOwogICAgICAgICAgICBtcFttblJbdV0gKyB1XS0tOwogICAgICAgIH0KCiAgICAgICAgaW50IHZhbCA9IG14TFtpXSArIGk7CgogICAgICAgIEFucyArPSBtcFt2YWxdOwogICAgfQoKCiAgICBEbkMoTCwgbWlkKTsKICAgIERuQyhtaWQgKyAxLCBSKTsKfQoKaW5saW5lIHZvaWQgU29sdmUoKSB7CiAgICBEbkMoMSwgbik7CiAgICBjb3V0IDw8IEFuczsKfQoKVGkyMF9udHNvbiB7CiAgICBmcmVvcGVuKFRBU0siLklOUCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oVEFTSyIuT1VUIiwidyIsc3Rkb3V0KTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGludCBUID0gMTsKLy8gICAgY2luID4+IFQ7CiAgICB3aGlsZSAoVCAtLSApIHsKICAgICAgICBSZWFkX0lucHV0KCk7CiAgICAgICAgU29sdmUoKTsKICAgIH0KfQoK