def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 A = list(map(int, input[idx:idx+N])) idx += N prefix = [0] * (N + 1) for i in range(1, N+1): prefix[i] = prefix[i-1] + A[i-1] INF = float('inf') dp = [[INF] * (N + 1) for _ in range(N + 1)] dp[0][0] = 0 for j in range(1, N+1): dp[j][0] = INF opt = [[0]*(N+2) for _ in range(N+2)] for i in range(1, N+1): dp[1][i] = (prefix[i] - prefix[i-1]) ** 2 for j in range(2, N+1): opt[j][N+1] = N for i in reversed(range(1, N+1)): mn = INF l = opt[j][i+1] if i < N else 1 r = opt[j-1][i] if j > 1 else i r = min(r, i) for s in range(l, r+1): if s-2 < 0: prev = 0 if j - (i - s + 1) == 0 else INF else: prev = dp[j - (i - s + 1)][s-2] if prev == INF: continue current = prev + (prefix[i] - prefix[s-1]) ** 2 if current < mn: mn = current opt[j][i] = s dp[j][i] = mn if mn != INF else INF for j in range(1, N+1): res = INF for i in range(j, N+1): res = min(res, dp[j][i]) print(res) if __name__ == '__main__': main()