import sys import math import collections import bisect import itertools import decimal import copy # import numpy as np # sys.setrecursionlimit(10 ** 6) INF = 10 ** 20 MOD = 10 ** 9 + 7 # MOD = 998244353 ni = lambda: int(sys.stdin.readline().rstrip()) ns = lambda: map(int, sys.stdin.readline().rstrip().split()) na = lambda: list(map(int, sys.stdin.readline().rstrip().split())) na1 = lambda: list(map(lambda x: int(x) - 1, sys.stdin.readline().rstrip().split())) # ===CODE=== def main(): n = ni() a = na() flg = True cnt = 0 for i in range(len(a) - 1, -1, -1): if a[i] <= i + 1 and (a[i] + cnt) % (i + 1) == 0: cnt += (a[i] + cnt) // (i + 1) else: flg = False break print("Yes" if flg else "No") if __name__ == '__main__': main()