#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[200010],v[200010],ans,pw[200010];
const int md=1000000007;
int pow(int x,int y){
int ss=1;
while(y){
if(y&1)ss=ss*x%md;
x=x*x%md;
y>>=1;
}
return ss;
}
signed main(){
scanf("%lld",&n);
int s=0;
for(int i=1;i<=n;i++)scanf("%lld%lld",&a[i],&v[i]),s+=a[i];
// pw[0]=1;
// for(int i=1;i<=s;i++)pw[i]=pw[i-1]*i%md;
// for(int i=0;i<=a[1];i++)
// for(int j=0;j<=a[2];j++){
// if(i==0&&j==0)continue;
// else if(j==0)ans=(ans+pow(v[1],i)*C(a[1],i)%md)%md;
// else if(i==0)ans=(ans+pow(v[2],j)*C(a[2],j)%md)%md;
// else ans=(ans+((pow(v[1],i)+pow(v[2],j))%md*C(a[1],i)%md*C(a[2],j)%md))%md;
// }
// printf("%lld\n",ans);
// return 0;
for(int i=1;i<=n;i++){
ans=(ans+pow(2ll,s-a[i])*((pow(v[i]+1ll,a[i])-1ll+md)%md)%md)%md;
}
printf("%lld\n",ans);
return 0;
}