#include <bits/stdc++.h>
using namespace std;
#define TASK "test"
#define int long long
#define fi first
#define sc second
#define ii pair <int, int>
#define rep(i,s,e) for (int i = (s), _e = (e); i <= _e; i++)
#define reo(i,s,e) for (int i = (s), _e = (e); i >= _e; i--)
const int maxn = 3005;
const int mod = (int)1e9 + 7;
const int inf = (int)1e18;
int n, k;
int a[maxn];
int cost (int l, int mid, int r)
{
return (a[mid] - a[l - 1]) * (a[r] - a[mid]);
}
bool maximize (int &a, int b)
{
if (a >= b) return false;
a = b;
return true;
}
namespace sub1
{
const int maxn = 305;
int ans, dp[maxn][maxn];
void process ()
{
rep (p, 1, k) rep (i, 1, n) rep (j, 1, i - 1)
maximize(dp[p][i], dp[p - 1][j] + cost(j, i - 1, n));
rep (i, 1, n) maximize(ans, dp[k][i]);
cout << ans << '\n';
}
}
namespace sub2
{
vector <int> dp1, dp2;
void dac (int l = 1, int r = n, int optl = 1, int optr = n)
{
if (l > r) return ;
int mid = l + r >> 1;
int opt = 0;
rep (i, optl, min(optr, mid - 1))
if (maximize(dp1[mid], dp2[i] + cost(i, mid - 1, n)))
opt = i;
dac(l, mid - 1, optl, opt);
dac(mid + 1, r, opt, optr);
}
void process ()
{
dp1.resize(n + 5), dp2.resize(n + 5);
rep (i, 1, n) dp2[i] = cost(1, i - 1, n);
rep (i, 2, k)
{
dac();
dp2 = dp1;
}
int ans = 0;
rep (i, 1, n) maximize(ans, dp1[i]);
cout << ans;
}
}
signed main ()
{
cin.tie(0)->sync_with_stdio(false);
#ifndef ONLINE_JUDGE
freopen(TASK".inp","r",stdin);
freopen(TASK".out","w",stdout);
#endif
cin >> n >> k;
rep (i, 1, n)
{
cin >> a[i];
a[i] += a[i - 1];
}
if (n <= 300) sub1::process();
else sub2::process();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIFRBU0sgInRlc3QiCgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNjIHNlY29uZAojZGVmaW5lIGlpIHBhaXIgPGludCwgaW50PgoKI2RlZmluZSByZXAoaSxzLGUpIGZvciAoaW50IGkgPSAocyksIF9lID0gKGUpOyBpIDw9IF9lOyBpKyspCiNkZWZpbmUgcmVvKGkscyxlKSBmb3IgKGludCBpID0gKHMpLCBfZSA9IChlKTsgaSA+PSBfZTsgaS0tKQoKY29uc3QgaW50IG1heG4gPSAzMDA1Owpjb25zdCBpbnQgbW9kID0gKGludCkxZTkgKyA3Owpjb25zdCBpbnQgaW5mID0gKGludCkxZTE4OwoKaW50IG4sIGs7CmludCBhW21heG5dOwoKaW50IGNvc3QgKGludCBsLCBpbnQgbWlkLCBpbnQgcikKewogICAgcmV0dXJuIChhW21pZF0gLSBhW2wgLSAxXSkgKiAoYVtyXSAtIGFbbWlkXSk7Cn0KCmJvb2wgbWF4aW1pemUgKGludCAmYSwgaW50IGIpCnsKICAgIGlmIChhID49IGIpIHJldHVybiBmYWxzZTsKICAgIGEgPSBiOwogICAgcmV0dXJuIHRydWU7Cn0KCm5hbWVzcGFjZSBzdWIxCnsKICAgIGNvbnN0IGludCBtYXhuID0gMzA1OwogICAgaW50IGFucywgZHBbbWF4bl1bbWF4bl07CgogICAgdm9pZCBwcm9jZXNzICgpCiAgICB7CiAgICAgICAgcmVwIChwLCAxLCBrKSByZXAgKGksIDEsIG4pIHJlcCAoaiwgMSwgaSAtIDEpCiAgICAgICAgICAgIG1heGltaXplKGRwW3BdW2ldLCBkcFtwIC0gMV1bal0gKyBjb3N0KGosIGkgLSAxLCBuKSk7CiAgICAgICAgcmVwIChpLCAxLCBuKSBtYXhpbWl6ZShhbnMsIGRwW2tdW2ldKTsKICAgICAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMgp7CiAgICB2ZWN0b3IgPGludD4gZHAxLCBkcDI7CgogICAgdm9pZCBkYWMgKGludCBsID0gMSwgaW50IHIgPSBuLCBpbnQgb3B0bCA9IDEsIGludCBvcHRyID0gbikKICAgIHsKICAgICAgICBpZiAobCA+IHIpIHJldHVybiA7CiAgICAgICAgaW50IG1pZCA9IGwgKyByID4+IDE7CgogICAgICAgIGludCBvcHQgPSAwOwoKICAgICAgICByZXAgKGksIG9wdGwsIG1pbihvcHRyLCBtaWQgLSAxKSkKICAgICAgICAgICAgaWYgKG1heGltaXplKGRwMVttaWRdLCBkcDJbaV0gKyBjb3N0KGksIG1pZCAtIDEsIG4pKSkKICAgICAgICAgICAgICAgIG9wdCA9IGk7CgogICAgICAgIGRhYyhsLCBtaWQgLSAxLCBvcHRsLCBvcHQpOwogICAgICAgIGRhYyhtaWQgKyAxLCByLCBvcHQsIG9wdHIpOwogICAgfQoKICAgIHZvaWQgcHJvY2VzcyAoKQogICAgewogICAgICAgIGRwMS5yZXNpemUobiArIDUpLCBkcDIucmVzaXplKG4gKyA1KTsKICAgICAgICByZXAgKGksIDEsIG4pIGRwMltpXSA9IGNvc3QoMSwgaSAtIDEsIG4pOwoKICAgICAgICByZXAgKGksIDIsIGspCiAgICAgICAgewogICAgICAgICAgICBkYWMoKTsKICAgICAgICAgICAgZHAyID0gZHAxOwogICAgICAgIH0KCiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgcmVwIChpLCAxLCBuKSBtYXhpbWl6ZShhbnMsIGRwMVtpXSk7CiAgICAgICAgY291dCA8PCBhbnM7CiAgICB9Cn0KCnNpZ25lZCBtYWluICgpCnsKICAgIGNpbi50aWUoMCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbihUQVNLIi5pbnAiLCJyIixzdGRpbik7CiAgICBmcmVvcGVuKFRBU0siLm91dCIsInciLHN0ZG91dCk7CiAgICAjZW5kaWYKCiAgICBjaW4gPj4gbiA+PiBrOwogICAgcmVwIChpLCAxLCBuKQogICAgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIGFbaV0gKz0gYVtpIC0gMV07CiAgICB9CgogICAgaWYgKG4gPD0gMzAwKSBzdWIxOjpwcm9jZXNzKCk7CiAgICBlbHNlIHN1YjI6OnByb2Nlc3MoKTsKCiAgICByZXR1cm4gMDsKfQoKCg==