#include <bits/stdc++.h>
using namespace std;
const int MAXN=32,ha=1e9+7;
int n,a[MAXN],b[MAXN],ans,c[MAXN];
inline void add(int &x,int v){x+=v;if (x>=ha) x-=ha;}
inline void dfs(int x){
if (x>n){
for (int i=1;i<=n;i++){
int p=i,q=i;
while (p-1>0&&c[p-1]<=c[i]) --p;
while (q+1<=n&&c[q+1]<c[i]) ++q;
p=i-p,q=q-i;
if (abs(p-q)>2) return;
}
add(ans,1);return;
}
for (int i=a[x];i<=b[x];i++) c[x]=i,dfs(x+1);
}
int main(){
freopen("robot.in","r",stdin);freopen("robot.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
dfs(1);
printf("%d\n",ans);
return 0;
}