#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using Graph = vector<vector<int>>;
#define ALL(x) (x).begin(), (x).end()
#define REP(i ,n) for(int i = 0; i < (int)(n); i++)
#define pb push_back
#define mp make_pair
typedef vector<int>vint;
typedef vector<ll>vll;
template<typename T> istream &operator>>(istream &is, vector<T> &vec){ for (auto &v : vec) is >> v; return is; }
template<typename A,typename B>inline bool chmin(A &a,const B &b){if(a>b){a=b;return true;}else{return false;}}
template<typename A,typename B>inline bool chmax(A &a,const B &b){if(a<b){a=b;return true;}else{return false;}}

int main()
{
    int N;
    cin >> N;
    vll A(N+1);
    ll total = 0;
    REP(i,N){
        cin >> A[i+1];
        total += A[i+1];
    }
    ll cnt = 0;
    bool flag = true;
    for(ll i=N; i>=1; i--){
        if(0 == (A[i]+cnt)%i){
            cnt += (A[i]+cnt)/i;
        }else{
            flag = false;
            break;
        }
    }
    if(flag && cnt == total){
        cout << "Yes" << endl;
    }else{
        cout << "No" << endl;
    }
}