#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
const int maxn=1e5+10;
const int sqt=300;
const int mod=1e9+7;
int v[maxn], qtd[sqt][sqt];
vector<pair<int,pii>>tira[maxn];
signed main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int n, resp=0; cin >> n;
v[1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<sqt;j++) v[i]=((v[i]+qtd[j][(i%j)])%mod);
resp+=v[i]; resp%=mod;
// cout << v[i] << ' ';
for(pair<int,pii> p : tira[i]){
qtd[p.se.fi][p.se.se]-=p.fi;
qtd[p.se.fi][p.se.se]%=mod; qtd[p.se.fi][p.se.se]+=mod; qtd[p.se.fi][p.se.se]%=mod;
}
int x, d; cin >> d >> x;
int fim=x*d+i;
if(d==0) continue;
if(d<sqt){
qtd[d][(i%d)]+=v[i]; qtd[d][(i%d)]%=mod;
if(fim<=n) tira[fim].push_back({v[i],{d,(i%d)}});
}else{
fim=min(fim,n);
for(int j=i+d;j<=fim;j+=d) v[j]=((v[j]+v[i])%mod);
}
}
// cout << '\n';
cout << resp << '\n';
}