#include using namespace std; typedef long long ll; const double pi=3.141592653589793; typedef unsigned long long ull; typedef long double ldouble; const ll INF=1e18; #define rep(i, n) for(ll i = 0; i < (ll)(n); i++) #define rep2(i, s, n) for (ll i = (s); i < (ll)(n); i++) template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } vector > c(2*10e5+1); void solve(int x, int y) { } int main(){ int n; cin >> n; vector a(n+1); rep(i, n){ cin >> a[i+1]; } while(true){ bool ok = false; bool end = true; rep2(i, 1, n+1){ if(a[i] == i) { rep2(j, 1, i) { a[j]++; } a[i] = 0; ok = true; break; } else if(end && a[i] != 0) { end = false; } } if(!ok && end) { cout << "Yes" << endl; return 0; } else if(!ok && !end) { cout << "No" << endl; return 0; } } }