#include <bits/stdc++.h>
using namespace std;
long long GCD(long long x, long long y) {
  if (y == 0) return x;
  return GCD(y, x % y);
}
long long LCM(long long x, long long y) { return (x * y) / (GCD(x, y)); }
long long LOGK(long long x, long long k) {
  if (x >= k) return 1 + LOGK(x / k, k);
  return 0;
}
long long MPOW(long long a, long long b, long long m) {
  if (b == 0) return 1;
  long long x = MPOW(a, b / 2, m);
  x = (x * x) % m;
  if (b % 2 == 1) x = (x * a) % m;
  return x;
}
int main() {
  long long test = 1;
  while (test--) {
    long long n;
    cin >> n;
    long long ar[n + 1];
    long long dp[n + 1];
    dp[0] = 1;
    for (long long i = 1; i <= n; i++) dp[i] = 0;
    long long ans = 0;
    for (long long i = 1; i <= n; i++) {
      cin >> ar[i];
      vector<long long> g;
      for (long long j = 1; j <= (long long)(sqrt(ar[i])); j++) {
        if (ar[i] % j == 0) {
          g.push_back(j);
          if (ar[i] / j != j) {
            g.push_back(ar[i] / j);
          }
        }
      }
      sort(g.begin(), g.end());
      reverse(g.begin(), g.end());
      for (auto it : g) {
        if (it <= n) {
          dp[it] += dp[it - 1];
          dp[it] %= 1000000007;
        }
      }
    }
    for (long long i = 1; i <= n; i++) {
      ans += dp[i];
      ans %= 1000000007;
    }
    cout << ans;
  }
}
