#include <bits/stdc++.h>
using namespace std;
const long long oo = 1e18 + 7;
int n, k;
long long a[1005];

namespace sub1 {

    long long pre[1005];

    void SOLVE() {

        long long ans = oo;
        for (int i = 1; i <= n; i++) pre[i] = pre[i - 1] + a[i];
        for (int l = 1; l <= n; l++) {
            for (int r = l; r <= n; r++) {
                long long res1 = pre[r] - pre[l - 1];
                long long res2 = pre[n] - res1;
                ans = min(ans, res1 * res1 + res2 * res2);
            }
        }

        cout << ans << '\n';

    }

}

namespace sub2345 {

    int pos[505];
    long long pre[505];
    long long dp[505][505];

    long long bp(long long sum) {
        return sum * sum;
    }

    long long solve() {
        for (int i = 0; i <= n; i++)
        for (int j = 0; j <= k; j++) dp[i][j] = oo;
        for (int i = 0; i <= k; i++) pos[i] = 0;
        dp[0][0] = 0;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= min(i, k); j++) {
                while (pos[j - 1] + 1 <= i - 1 && dp[pos[j - 1]][j - 1] + bp(pre[i] - pre[pos[j - 1]]) >= dp[pos[j - 1] + 1][j - 1] + bp(pre[i] - pre[pos[j - 1] + 1])) pos[j - 1]++;
                dp[i][j] = min(dp[i][j], dp[pos[j - 1]][j - 1] + bp(pre[i] - pre[pos[j - 1]]));
            }
        }
        return dp[n][k];
    }

    void SOLVE() {

        long long ans = oo;
        for (int i = 1; i <= n; i++) {
            a[0] = a[1];
            for (int j = 1; j < n; j++) a[j] = a[j + 1];
            a[n] = a[0];
            for (int j = 1; j <= n; j++) pre[j] = pre[j - 1] + a[j];
            ans = min(ans, solve());
        }

        cout << ans << '\n';

    }

}

main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin >> n >> k;
    for (int i = 1; i <= n; i++) cin >> a[i];

    if (k == 2) sub1::SOLVE();
    else sub2345::SOLVE();

    return 0;
}
