#include<cstdio>
#include<algorithm>
using namespace std;
#define MAXN 200010
#define MO 1000000007
struct node
{
	int v,x,id;
}e[MAXN];
bool cmp1(node a,node b)
{
	return a.v<b.v;
}
bool cmp2(node a,node b)
{
	return a.x<b.x;
}
int n,mx,l[MAXN],r[MAXN],dp[MAXN],sum[MAXN];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d%d",&e[i].x,&e[i].v);
	sort(e+1,e+1+n,cmp1);
	for(int i=1;i<=n;i++)
		e[i].id=i;
	sort(e+1,e+1+n,cmp2);
	int mx=0,mn=n+1;
	for(int i=1;i<=n;i++)
	{
		mx=max(mx,e[i].id);
		r[i]=mx;
	}
	for(int i=n;i;i--)
	{
		mn=min(mn,e[i].id);
		l[i]=mn;
	}
	sum[0]=1;
	for(int i=1,j=1;i<=n;i++)
	{
		for(;j<=r[i];j++) sum[j]=sum[j-1];
		dp[i]=((sum[r[i]]-(l[i]==1?0:sum[l[i]-2]))%MO+MO)%MO;
		(sum[r[i]]+=dp[i])%=MO;
	}
	int ans=((sum[n]-sum[n-1])%MO+MO)%MO;
	printf("%d\n",ans);
}
