/* -*- coding: utf-8 -*- * * 1331.cc: No.1331 Moving Penguin - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 100000; const int MOD = 1000000007; /* typedef */ typedef long long ll; typedef vector vi; typedef queue qi; typedef pair pii; /* global variables */ int as[MAX_N], dp[MAX_N]; /* subroutines */ inline void addmod(int &a, int b) { a = (a + b) % MOD; } /* main */ int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", as + i); dp[0] = 1; for (int i = 0; i < n; i++) { for (int j = i + as[i]; j < n; j += as[i]) addmod(dp[j], dp[i]); if (i + 1 < n && as[i] != 1) addmod(dp[i + 1], dp[i]); } printf("%d\n", dp[n - 1]); return 0; }