Problem:
Score : 500 points

Problem Statement

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.

Sample Input 1

5
4 5 1 2 3

Sample Output 1

YES

All the stones can be removed in one operation by selecting the second box.

Sample Input 2

5
6 9 12 10 8

Sample Output 2

YES

Sample Input 3

4
1 2 3 1

Sample Output 3

NO

Solution in Ruby (2.3.3) (judge verdict: Wrong Answer)




n = gets.to_i
data = gets.split

result = "YES"

data.size.times do |i|
    data[i] = data[i].to_i
end

diff = []

data.size.times do |i|
    diff.push(data[(i+1)%data.size] - data[i%data.size])
end

#合計値の取得
sum_value = 0
sum_num = 0
data.size.times do |i|
    sum_value += data[i]
    sum_num += (i+1)
end

cnt = sum_value / sum_num #操作の回数
if sum_value % sum_num != 0
    result = "NO"
else
    # cnt.times do
    #     diff.size.times do |i|
    #         diff[i] -= 1
    #     end
    # end
    diff.size.times do |i|
        diff[i] -= cnt
    end

    tmp = 0 #-nの個数を格納する
    diff.each do |value|
        if -value == n
            tmp += 1
        end
    end

    if tmp == cnt
        result = "YES"
    else
        result = "NO"
        # puts tmp,n

    end

end






# p "diff:#{diff},sum_value:#{sum_value},sum_num:#{sum_num}"
puts result
# p data