N = int(input()) A = [0]*N + list(map(int, input().split())) + [0]*N print(A) # k 乗根 def sqrt(n: int, k = 2): l = k - 1 if not n: return 0 y = 1 << (n.bit_length() + l) // k x = y + 1 while y < x: x = y y = (l * x + n // (x ** l)) // k return x total = sum(A) H = sqrt(total) ans = total for h in range(1, H + 1): # ピラミッドの高さを固定 for l in range(3*N): # 開始地点(左端)を固定 if l + 2*h - 2 >= 3*N: break model = 1 sign = 1 no_need_to_move = 0 for i in range(2*h - 2 + 1): cur = A[l + i] no_need_to_move += min(cur, model) if model == h: # 真ん中に到達 sign *= -1 model += sign score = total - no_need_to_move ans = min(ans, score) print(ans)