#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
constexpr int N = 1111 + 5;
constexpr int P = 1e9 + 9999;
int n;
pair<int, int> ranges[N];
int inv[N] = {0};
int a[N];
int invert(int x) {
int y = 1;
for (int k = P - 2; k; k >>= 1) {
if (k & 1)
y = y * x % P;
x = x * x % P;
}
return y;
}
void init() {
inv[1] = 1;
for (int p = 2; p < N; p++) {
if (inv[p]) continue;
inv[p] = invert(p);
for (int k = p; k * p < N; k++) {
inv[k * p] = inv[k] * inv[p] % P;
}
}
}
int get(int x)
{
int y = 1;
int res = 0;
for (int k = 0; k <= n; k++) {
y = y * (x - k + P) % P;
res = (res + a[k] * y % P * inv[k + 1]) % P;
}
return res;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// freopen("input.txt", "r", stdin);
// freopen("maxvalue.inp", "r", stdin);
// freopen("maxvalue.out", "w", stdout);
init();
cin >> n;
int prod = 1;
int maxl = 0;
int maxr = 0;
for (int i = 1; i <= n; i++) {
int l, r;
cin >> l >> r;
r++;
ranges[i] = {l, r};
maxl = max(maxl, l);
maxr = max(maxr, r);
prod = prod * (r - l) % P;
}
int U = prod * maxr % P;
ranges[0] = {0, maxl};
sort(ranges + 1, ranges + n + 1,
[](const pair<int, int> &lr1, const pair<int, int> &lr2) {
return lr1.second < lr2.second;
});
int ans = 0;
a[0] = 1;
for (int i = 1; i <= n; i++)
a[i] = 0;
for (int i = n; i; i--) {
int L = ranges[i].first;
int R = ranges[i].second;
int lo = max(maxl, ranges[i - 1].second);
for (int k = n; k >= 0; k--) {
a[k] = a[k] * (k - L + P);
if (k > 0) a[k] += a[k - 1];
a[k] %= P;
}
prod = prod * invert(R - L) % P;
ans += (get(R + 1) - get(lo + 1) + P) * prod % P;
if (lo == maxl) break;
}
cout << ((U - ans + P) % P + P) % P;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojZGVmaW5lIGludCBsb25nIGxvbmcKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3RleHByIGludCBOID0gMTExMSArIDU7CmNvbnN0ZXhwciBpbnQgUCA9IDFlOSArIDk5OTk7CmludCBuOwpwYWlyPGludCwgaW50PiByYW5nZXNbTl07CgppbnQgaW52W05dID0gezB9OwppbnQgYVtOXTsKCmludCBpbnZlcnQoaW50IHgpIHsKICAgIGludCB5ID0gMTsKICAgIGZvciAoaW50IGsgPSBQIC0gMjsgazsgayA+Pj0gMSkgewogICAgICAgIGlmIChrICYgMSkKICAgICAgICAgICAgeSA9IHkgKiB4ICUgUDsKICAgICAgICB4ID0geCAqIHggJSBQOwogICAgfQogICAgcmV0dXJuIHk7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGludlsxXSA9IDE7CiAgICBmb3IgKGludCBwID0gMjsgcCA8IE47IHArKykgewogICAgICAgIGlmIChpbnZbcF0pIGNvbnRpbnVlOwogICAgICAgIGludltwXSA9IGludmVydChwKTsKICAgICAgICBmb3IgKGludCBrID0gcDsgayAqIHAgPCBOOyBrKyspIHsKICAgICAgICAgICAgaW52W2sgKiBwXSA9IGludltrXSAqIGludltwXSAlIFA7CiAgICAgICAgfQogICAgfQp9CgppbnQgZ2V0KGludCB4KQp7CiAgICBpbnQgeSA9IDE7CiAgICBpbnQgcmVzID0gMDsKICAgIGZvciAoaW50IGsgPSAwOyBrIDw9IG47IGsrKykgewogICAgICAgIHkgPSB5ICogKHggLSBrICsgUCkgJSBQOwogICAgICAgIHJlcyA9IChyZXMgKyBhW2tdICogeSAlIFAgKiBpbnZbayArIDFdKSAlIFA7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CgpzaWduZWQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoTlVMTCk7CiAgICBjb3V0LnRpZShOVUxMKTsKCiAgICAvLyBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oIm1heHZhbHVlLmlucCIsICJyIiwgc3RkaW4pOwogICAgLy8gZnJlb3BlbigibWF4dmFsdWUub3V0IiwgInciLCBzdGRvdXQpOwoKICAgIGluaXQoKTsKCiAgICBjaW4gPj4gbjsKCiAgICBpbnQgcHJvZCA9IDE7CgogICAgaW50IG1heGwgPSAwOwogICAgaW50IG1heHIgPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaW50IGwsIHI7CiAgICAgICAgY2luID4+IGwgPj4gcjsKICAgICAgICByKys7CiAgICAgICAgcmFuZ2VzW2ldID0ge2wsIHJ9OwoKICAgICAgICBtYXhsID0gbWF4KG1heGwsIGwpOwogICAgICAgIG1heHIgPSBtYXgobWF4ciwgcik7CiAgICAgICAgcHJvZCA9IHByb2QgKiAociAtIGwpICUgUDsKICAgIH0KICAgIGludCBVID0gcHJvZCAqIG1heHIgJSBQOwoKICAgIHJhbmdlc1swXSA9IHswLCBtYXhsfTsKICAgIHNvcnQocmFuZ2VzICsgMSwgcmFuZ2VzICsgbiArIDEsCiAgICAgIFtdKGNvbnN0IHBhaXI8aW50LCBpbnQ+ICZscjEsIGNvbnN0IHBhaXI8aW50LCBpbnQ+ICZscjIpIHsKICAgICAgICByZXR1cm4gbHIxLnNlY29uZCA8IGxyMi5zZWNvbmQ7CiAgICB9KTsKCiAgICBpbnQgYW5zID0gMDsKCiAgICBhWzBdID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICBhW2ldID0gMDsKCiAgICBmb3IgKGludCBpID0gbjsgaTsgaS0tKSB7CiAgICAgICAgaW50IEwgPSByYW5nZXNbaV0uZmlyc3Q7CiAgICAgICAgaW50IFIgPSByYW5nZXNbaV0uc2Vjb25kOwogICAgICAgIGludCBsbyA9IG1heChtYXhsLCByYW5nZXNbaSAtIDFdLnNlY29uZCk7CgogICAgICAgIGZvciAoaW50IGsgPSBuOyBrID49IDA7IGstLSkgewogICAgICAgICAgICBhW2tdID0gYVtrXSAqIChrIC0gTCArIFApOwogICAgICAgICAgICBpZiAoayA+IDApIGFba10gKz0gYVtrIC0gMV07CiAgICAgICAgICAgIGFba10gJT0gUDsKICAgICAgICB9CgogICAgICAgIHByb2QgPSBwcm9kICogaW52ZXJ0KFIgLSBMKSAlIFA7CgogICAgICAgIGFucyArPSAoZ2V0KFIgKyAxKSAtIGdldChsbyArIDEpICsgUCkgKiBwcm9kICUgUDsKICAgICAgICBpZiAobG8gPT0gbWF4bCkgYnJlYWs7IAogICAgfQoKICAgIGNvdXQgPDwgKChVIC0gYW5zICsgUCkgJSBQICsgUCkgJSBQOwoKICAgIHJldHVybiAwOwp9