#include <bits/stdc++.h>
using namespace std;

void solve() {
    int n;
    cin >> n;
    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++) cin >> a[i];

    vector<int> bad(n + 1), left(n + 1, -1);
    for (int k = 1; k <= n; k++) {
        for (int j = 0; j < a[k]; j++) {
            int lo = k * j;
            if (lo > n - 1) break;
            int hi = min(lo + k, n) - 1;
            left[hi] = max(left[hi], lo);
        }

        int lo = min(k * a[k], n);
        int hi = min(lo + k, n);
        bad[lo]++;
        bad[hi]--;
    }
    for (int i = 1; i <= n; i++) bad[i] += bad[i - 1];
    
    vector<long long> dp(n);
    int preleft = -1;
    long long total = 1;
    const long long MOD = 1000000007;
    for (int i = 0; i < n; i++) {
        if (bad[i] == 0) {
            dp[i] = total;
            total = (total + dp[i]) % MOD;
        }
        int curleft = left[i];
        for (int j = preleft; j < curleft; j++) {
            if (j == -1) total--;
            else total -= dp[j];
            total = (total + MOD) % MOD;
        }
        preleft = max(preleft, curleft);
    }

    cout << total << '\n';
}

int main() {
    int t;
    cin >> t;
    while (t--) solve();
}
