#include<bits/stdc++.h>
#define MOD(x) ((x)>=mod?(x)-mod:(x))
using namespace std;
const int maxn=500010, inf=1e9, mod=1e9+7;
struct poi{int x, v;}q[maxn];
int n;
int l[maxn], r[maxn], f[maxn], pos[maxn];

bool operator < (poi a, poi b){return a.x<b.x;}

inline bool cmp(int a, int b){return q[a].v<q[b].v;}

int main()
{
	scanf("%d", &n);
	for(int i=1;i<=n;i++) scanf("%d%d", &q[i].x, &q[i].v);
	sort(q+1, q+1+n); for(int i=1;i<=n;i++) pos[i]=i;
	sort(pos+1, pos+1+n, cmp);
	for(int i=1;i<=n;i++) l[pos[i]]=r[pos[i]]=i;
	for(int i=2;i<=n;i++) r[i]=max(r[i], r[i-1]);
	for(int i=n-1;i;i--) l[i]=min(l[i], l[i+1]);
	f[0]=1;
	for(int i=1, j=0, ans=1;i<=n;i++)
	{
		while(j<l[i]-1) ans=MOD(ans-f[j]+mod), j++;
		f[r[i]]=MOD(f[r[i]]+ans);
		ans=MOD(ans+ans);
	}
	printf("%d\n", f[n]);
}