#include using namespace std; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; assert(n <= 600); vector a(n); for (auto&& e : a) { cin >> e; } vector cum(n + 1); for (int i = n; i--; ) { cum[i] = a[i] + cum[i + 1]; } auto chmin = [](auto&& l, auto r) { l = min(l, r); }; vector< vector > dp(n + 1, vector(n + 1, 1e18)); dp[0][0] = 0; for (int i = 0; i < n; ++i) { vector< vector > ndp(n + 1, vector(n + 1, 1e18)); for (int k = 0; k <= i; ++k) { for (int x = 0; x <= k; ++x) { chmin(ndp[k][0], dp[k][x]); chmin(ndp[k + 1][x + 1], dp[k][x] + a[i] * a[i] + 2 * a[i] * (cum[i - x] - cum[i])); } } swap(dp, ndp); } for (int k = 1; k <= n; ++k) { cout << *min_element(begin(dp[k]), end(dp[k])) << '\n'; } }