const ll Mod=1e9+7;
const int maxn=1e5+10;
int a[maxn],n;
vector<int>factor;
ll dp[2][maxn];
inline void fac(int id){
factor.clear();
for(int i(1),up(sqrt(a[id]));i<=up;++i){
if(a[id]%i==0){
factor.emplace_back(i);
int temp=a[id]/i;
if(temp!=i)factor.emplace_back(temp);
}
}
sort(factor.begin(),factor.end());
}
int main() {
read(n);
for(int i(1);i<=n;++i){
read(a[i]);
}
int now=0,lst=1;
for(int i(1);i<=n;++i){
dp[lst][0]=1;
memset(dp[now],0,sizeof dp[now]);
fac(i);
for(auto k:factor){
dp[now][k]=(dp[now][k]+dp[lst][k-1])%Mod;
}
for(int j(1);j<=i;++j){
dp[now][j]=(dp[now][j]+dp[lst][j])%Mod;
}
swap(now,lst);
}
ll ans=0;
for(int i(1);i<=n;++i){
ans=(ans+dp[lst][i])%Mod;
}
write(ans);