#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=305,P=1e9+7;
int n,a[N],b[N],f[3005][10005],cnt,to[N][N];
void solve(int l,int r){
if (to[l][r])return;
if (l>r)return;
to[l][r]=++cnt;
for (int i=l;i<=r;i++)
if (abs((i-l)-(r-i))<=2){
solve(l,i-1);
solve(i+1,r);
for (int k=a[i];k<=b[i];k++)
(f[to[l][r]][k]+=((ll)f[to[l][i-1]][k]
*f[to[i+1][r]][k-1])%P)%=P;
}
for (int i=1;i<=10000;i++)
(f[to[l][r]][i]+=f[to[l][r]][i-1])%=P;
}
int main(){
scanf("%d",&n);
for (int i=1;i<=n;i++)scanf("%d%d",&a[i],&b[i]);
for (int i=0;i<=10000;i++)f[0][i]=1;
solve(1,n);
printf("%d\n",f[to[1][n]][10000]);
return 0;
}