//存在型动态规划
#include<iostream>
#include<cstdio>
using namespace std;
int n, step[100];//n:最大距离,step[i]:在 i 处的最大步数
int main() {
cin >> n;
int f[100]; //f[i]:是否可以来到 i 处
for (int i = 0;i < n;i++) cin >> step[i];
f[0] = 1;//初始化(首位置一定可以来到)
for (int i = 0;i < n;i++) {
for (int j = 0;j < i;j++) {
if (f[j] && j + step[j] >= i) {//可以来到 j 并且可以从 j 跳到 i 时
f[i] = 1;break;//就可以来到 i
}
}
}
if (f[n - 1] == 1) cout << "Yes";
else cout << "No";
return 0;
}