#include #define rep(i,n) for(int i = 0; i < (n); ++i) #define srep(i,s,t) for (int i = s; i < t; ++i) #define drep(i,n) for(int i = (n)-1; i >= 0; --i) using namespace std; typedef long long int ll; typedef pair P; #define yn {puts("YES");}else{puts("NO");} #define MAX_N 200005 const ll MOD = 1000000007; ll keep[210][210]; int main() { int n; cin >> n; int a[n] = {}; rep(i,n) cin >> a[i]; ll dp[n] = {}; dp[0] = 1; rep(i,n){ // keepから受け取る srep(j,1,200){ dp[i] += keep[j][i%j]; } dp[i] %= MOD; // 配る if(a[i] >= 200){ int ii = i + a[i]; while(ii < n){ dp[ii] += dp[i]; ii += a[i]; } }else{ keep[a[i]][i%a[i]] += dp[i]; } if(a[i] >= 2 && i < n-1){ dp[i+1] += dp[i]; } } cout << dp[n-1] << endl; return 0; }