There are N boxes arranged in a circle. The i-th box contains A_i stones.

Determine whether it is possible to remove all the stones from the boxes by repeatedly performing the following operation:

* Select one box. Let the box be the i-th box. Then, for each j from 1 through N, remove exactly j stones from the (i+j)-th box. Here, the (N+k)-th box is identified with the k-th box.



Note that the operation cannot be performed if there is a box that does not contain enough number of stones to be removed.

Constraints

* 1 ≦ N ≦ 10^5
* 1 ≦ A_i ≦ 10^9

Input

The input is given from Standard Input in the following format:


N
A_1 A_2 … A_N


Output

If it is possible to remove all the stones from the boxes, print `YES`. Otherwise, print `NO`.

Examples

Input

5
4 5 1 2 3


Output

YES


Input

5
6 9 12 10 8


Output

YES


Input

4
1 2 3 1


Output

NO
N = int(input())
nums = list(map(int, input().split(" ")))

acc = [j - i for i, j in zip(nums[0:N - 1], nums[1:N])]
acc.append(nums[0] - nums[-1])
s = sum(nums)

if N == 1:
    print("YES")

else:
    change = N * (N + 1) // 2 #一回の操作で全体から減る分


    if s % change != 0: #何回か行って0になるわけだから 総数をchangeで割り切れなきゃ不可能
        print("NO")
        exit()

    change_kaisu = s // change #回数 = 総数/一回の減少分

    acc = list(map(lambda x: x - change_kaisu, acc))
    c = 0
    for temp in acc:
        if temp == 0:
            continue
        elif -temp % N == 0 and temp < 0:
            c += -temp // N
        else:
            print("NO")
            exit()
    if c == change_kaisu:
        print("YES")
    else:
        print("NO")
