#include <bits/stdc++.h>
#define N 330
#define P 1000000007
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
template <class Int> inline void read(Int& x) {
x = 0; char ch = getchar(); int f = 1;
for (; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
for (; isdigit(ch); x = x * 10 + ch - '0', ch = getchar());
x *= f;
}
int n, a[N], b[N], h[N];
namespace subtask2 {
int ret = 0;
inline void dfs(int step) {
if (step == 8) {
bool flag = 1;
for (int i = 1; i <= n; ++i) {
int l = i, r = i;
for (; l && h[l - 1] <= h[i]; --l);
for (; r < n && h[r + 1] <= h[i]; ++r);
if (r - i - (i - l) > 2) {
flag = 0;
break;
}
}
if (flag) {
++ret;
if (ret >= P) ret -= P;
}
return;
}
for (int i = a[step]; i <= b[step]; ++i) {
h[step] = i;
dfs(step + 1);
}
}
}
int main() {
srand(10086);
read(n);
bool flag = 1;
for (int i = 1; i <= n; ++i) {
read(a[i]), read(b[i]);
if (a[i] != b[i]) flag = 0;
}
if (flag) return puts("1"), 0;
if (n <= 7) {
subtask2::dfs(1);
return printf("%d\n", subtask2::ret), 0;
}
printf("%d\n", rand() % P + 1);
return 0;
}