#include <bits/stdc++.h>
using namespace std;
void add(long long &a, long long b) {
  a += b;
  if (a >= (233333333 * 4 + 23333333 * 2 + 2333333 * 8 + 233333 * 5 +
            23333 * 7 + 2333 + 233 * 4 + 23 * 3 + 2 + 2 + 2 + 3 + 3 + 3)) {
    a -= (233333333 * 4 + 23333333 * 2 + 2333333 * 8 + 233333 * 5 + 23333 * 7 +
          2333 + 233 * 4 + 23 * 3 + 2 + 2 + 2 + 3 + 3 + 3);
  }
}
struct BitchIsThere {
  int N;
  pair<long long, long long> dt[500005];
  void upd(pair<long long, long long> &a, pair<long long, long long> b) {
    if (a.first > b.first) {
      a = b;
    } else if (a.first == b.first) {
      add(a.second, b.second);
    }
  }
  void init(int nn) {
    N = nn;
    for (int i = 1; i <= nn; i++) {
      dt[i] = make_pair(
          (233333333 * 4 + 23333333 * 2 + 2333333 * 8 + 233333 * 5 + 23333 * 7 +
           2333 + 233 * 4 + 23 * 3 + 2 + 2 + 2 + 3 + 3 + 3),
          0);
    }
  }
  void insert(int x, pair<long long, long long> num) {
    while (x <= N) {
      upd(dt[x], num);
      x += x & -x;
    }
  }
  pair<long long, long long> qsum(int x) {
    pair<long long, long long> ans =
        make_pair((233333333 * 4 + 23333333 * 2 + 2333333 * 8 + 233333 * 5 +
                   23333 * 7 + 2333 + 233 * 4 + 23 * 3 + 2 + 2 + 2 + 3 + 3 + 3),
                  0);
    while (x) {
      upd(ans, dt[x]);
      x -= x & -x;
    }
    return ans;
  }
} bit;
int n;
vector<pair<long long, long long> > pills;
int main() {
  scanf("%d", &n);
  vector<int> ds;
  ds.push_back(-1);
  ds.push_back(0);
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    pills.push_back(make_pair(y, x));
    ds.push_back(x);
    ds.push_back(y);
  }
  sort(ds.begin(), ds.end());
  ds.resize(unique(ds.begin(), ds.end()) - ds.begin());
  sort(pills.begin(), pills.end());
  bit.init(ds.size());
  bit.insert(1, make_pair(0, 1));
  pair<long long, long long> ans =
      make_pair((233333333 * 4 + 23333333 * 2 + 2333333 * 8 + 233333 * 5 +
                 23333 * 7 + 2333 + 233 * 4 + 23 * 3 + 2 + 2 + 2 + 3 + 3 + 3),
                0);
  for (pair<long long, long long> p : pills) {
    int x = lower_bound(ds.begin(), ds.end(), p.first) - ds.begin();
    int y = lower_bound(ds.begin(), ds.end(), p.second) - ds.begin();
    pair<long long, long long> res = bit.qsum(x);
    if (p.second > pills.back().first) {
      bit.upd(ans, make_pair(res.first + p.first, res.second));
    } else {
      bit.insert(y, make_pair(p.first + res.first - p.second, res.second));
    }
  }
  printf("%lld\n", ans.second);
  return 0;
}
