#include #include using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, cnt = 0; cin >> n; vector a(n); for(auto &&v : a) cin >> v; vector sp(1, -1); for(int i = 0; i < n; i++){ if(a[i] == 0) sp.emplace_back(i); } sp.emplace_back(n); auto f = [&](int l, int r){ if(l == r) return true; if(a[l] != 1 && a[r - 1] != 1) return false; ll sv = a[l]; for(int i = l; i + 1 < r; i++){ sv += max(0, a[i + 1] - a[i]); } for(int i = l; i < r; i++){ if((i >= 1 && abs(a[i - 1] - a[i])) <= 1) continue; if((i + 1 < n && abs(a[i + 1] - a[i])) <= 1) continue; return false; } return sv <= r - l; }; for(int i = 0; i + 1 < sp.size(); i++){ if(!f(sp[i] + 1, sp[i + 1])){ cout << "No\n"; return 0; } } cout << "Yes\n"; }