local mod = 1000000007 local function badd(x, y) return (x + y) % mod end local n = io.read("*n") local a = {} local t = {} for i = 1, n do a[i] = io.read("*n") t[i] = 0 end local mini = {} local lim = 300 for i = 1, lim do mini[i] = {} for j = 1, i do mini[i][j] = 0 end end t[n] = 1 for j = 1, lim do local pos = (n % j) + 1 mini[j][pos] = 1 end for i = n - 1, 1, -1 do local ai = a[i] local v = 0 if lim < ai then local dst = i + ai while dst <= n do v = badd(v, t[dst]) dst = dst + ai end v = badd(v, t[i + 1]) else local pos = (i % ai) + 1 v = mini[ai][pos] if 1 < ai then v = badd(v, t[i + 1]) end end t[i] = v for j = 1, lim do local pos = (i % j) + 1 mini[j][pos] = badd(mini[j][pos], v) end end print(t[1])