#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
int n, a[N], topx, sx[N], topn, sn[N];
long long ans;
struct Seg_Tree {
  int mini[N << 2], lazy[N << 2];
  long long cnt[N << 2];
  inline int ls(int u) { return u << 1; }
  inline int rs(int u) { return u << 1 | 1; }
  inline void init(int u) { lazy[u] = 0; }
  inline void push_up(int u) {
    mini[u] = min(mini[ls(u)], mini[rs(u)]);
    cnt[u] = (mini[u] == mini[ls(u)] ? cnt[ls(u)] : 0) +
             (mini[u] == mini[rs(u)] ? cnt[rs(u)] : 0);
  }
  inline void tag(int u, int k) { lazy[u] += k, mini[u] += k; }
  inline void push_down(int u) {
    if (lazy[u]) {
      tag(ls(u), lazy[u]);
      tag(rs(u), lazy[u]);
      init(u);
    }
  }
  void build(int u, int l, int r) {
    init(u);
    if (l == r) {
      mini[u] = l, cnt[u] = 1;
      return;
    }
    int mid = (l + r) >> 1;
    build(ls(u), l, mid);
    build(rs(u), mid + 1, r);
    push_up(u);
  }
  void update(int u, int l, int r, int x, int y, int k) {
    if (x <= l && r <= y) {
      tag(u, k);
      return;
    }
    push_down(u);
    int mid = (l + r) >> 1;
    if (x <= mid) {
      update(ls(u), l, mid, x, y, k);
    }
    if (mid < y) {
      update(rs(u), mid + 1, r, x, y, k);
    }
    push_up(u);
  }
  long long query(int u, int l, int r, int x, int y) {
    if (x <= l && r <= y) {
      return mini[u] == 0 ? cnt[u] : 0;
    }
    push_down(u);
    int mid = (l + r) >> 1;
    long long res = 0;
    if (x <= mid) {
      res += query(ls(u), l, mid, x, y);
    }
    if (mid < y) {
      res += query(rs(u), mid + 1, r, x, y);
    }
    return res;
  }
} t;
int main() {
  scanf("%d", &n);
  for (int i = 1, x, y; i <= n; i++) {
    scanf("%d%d", &x, &y);
    a[x] = y;
  }
  t.build(1, 1, n);
  for (int i = 1; i <= n; i++) {
    t.update(1, 1, n, 1, n, -1);
    while (topx && a[sx[topx]] < a[i]) {
      t.update(1, 1, n, sx[topx - 1] + 1, sx[topx], a[i] - a[sx[topx]]);
      topx--;
    }
    sx[++topx] = i;
    while (topn && a[sn[topn]] > a[i]) {
      t.update(1, 1, n, sn[topn - 1] + 1, sn[topn], a[sn[topn]] - a[i]);
      topn--;
    }
    sn[++topn] = i;
    ans += t.query(1, 1, n, 1, i);
  }
  printf("%lld\n", ans);
  return 0;
}
