#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
int n,d[100005],x[100005],dp[100005],add[400][400],mod=1e9+7;
vector <int> vec[100005];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n;
int k=ceil(sqrt(n));
for(int i=1;i<=n;i++){
cin>>d[i]>>x[i];
}
int ans=0;
dp[1]=1;
for(int i=1;i<=n;i++){
dp[i]%=mod;
ans+=dp[i];
ans%=mod;
for(auto u:vec[i]){
add[u%d[u]][d[u]]-=dp[u];
add[u%d[u]][d[u]]%=mod;
add[u%d[u]][d[u]]+=mod;
add[u%d[u]][d[u]]%=mod;
}
if(d[i]!=0 and x[i]!=0 and d[i]<=k){
add[i%d[i]][d[i]]+=dp[i];
add[i%d[i]][d[i]]%=mod;
if(i+x[i]*d[i]<=n){
vec[i+x[i]*d[i]].pb(i);
}
}
for(int j=1;j<=min(k,n-i);j++){
dp[i+j]+=add[i%j][j];
dp[i+j]%=mod;
}
if(d[i]>k){
for(int j=1;j<=x[i];j++){
if(i+j*d[i]>n)break;
dp[i+j*d[i]]+=dp[i];
dp[i+j*d[i]]%=mod;
}
}
}
cout<<ans<<endl;
}