// #pragma GCC optimize("Ofast") // #pragma GCC optimize("unroll-loops") // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include <stdio.h> #include <iostream> #include <vector> #include <algorithm> #include <map> #include <queue> #include <cstdio> #include <ctime> #include <assert.h> #include <chrono> #include <random> #include <numeric> #include <set> #include <deque> #include <stack> #include <bitset> using namespace std; typedef long long int ll; typedef unsigned long long ull; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); ll myRand(ll B) { return (ull)rng() % B; } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; vector<int> a(n+1); for(int i=1;i<=n;i++){ cin >> a[i]; } int cnt=0; for(int i=n;i>0;i--){ if(!a[i])cnt++; else break; } bool ok=true; int add=-cnt; for(int i=n;i>0;i--){ if(add<0){ add++; continue; } if((a[i]+add)%i)ok=0; add=add+(a[i]+add)/i; } if(ok)printf("Yes\n"); else printf("No\n"); }