Skip to content

407B

Solution

#include <cstdio>
using namespace std;

const int MAX_N = 1010;
const int MOD = int(1e9) + 7;

int n;
int back[MAX_N];
int f[MAX_N][MAX_N];

int main()
{
    //input
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d", &back[i]);
    }

    //work
    for (int i = 2; i <= n + 1; i++)
    {
        for (int j = i - 1; j >= 1; j--)
        {
            f[j][i] = 0;
            f[j][i] = (f[j][i] + f[j][i - 1]) % MOD;
            f[j][i] = (f[j][i] + f[back[i - 1]][i - 1]) % MOD;
            f[j][i] = (f[j][i] + 2) % MOD;
        }
    }
    printf("%d\n", f[1][n + 1]);
    return 0;
}