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()