#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
using namespace std;
const int maxn = 250;
const int INF = 1e9;
const ll LINF = 1e18;
int n, k, dpmin[maxn + 10], dpmax[maxn + 10];
ll a[maxn + 10], ans = LINF, pre[maxn + 10];
vector<ll> s;
deque<int> dq;
bool check(ll l, ll r)
{
memset(dpmin, 0, sizeof dpmin);
memset(dpmax, 0, sizeof dpmax);
while (dq.size())
dq.pop_back();
int p = 1, q = 1;
for (int i = 1; i <= n; i++)
{
while (pre[i] - pre[p - 1] >= l)
{
if (dpmin[p - 1] != INF)
dq.push_back(p - 1);
p++;
}
while (pre[i] - pre[q - 1] > r)
q++;
while (dq.size() && dq.front() < q - 1)
dq.pop_front();
if (dq.size())
{
dpmin[i] = dpmin[dq.front()] + 1;
dpmax[i] = dpmax[dq.back()] + 1;
}
else
dpmin[i] = dpmax[i] = INF;
}
// for (int i = 1; i <= n; i++)
// cout << dpmin[i] << ' ' << dpmax[i], el;
return dpmin[n] <= k && k <= dpmax[n];
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("GIFTS.INP", "r"))
{
freopen("GIFTS.INP", "r", stdin);
freopen("GIFTS.OUT", "w", stdout);
}
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
pre[i] = pre[i - 1] + a[i];
}
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
s.push_back(pre[j] - pre[i - 1]);
sort(s.begin(), s.end());
int j = 0;
for (int i = 0; i < s.size(); i++)
{
while (check(s[j], s[i]))
{
ans = min(ans, s[i] - s[j]);
j++;
}
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVsIGNvdXQgPDwgJ1xuJwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMjUwOwpjb25zdCBpbnQgSU5GID0gMWU5Owpjb25zdCBsbCBMSU5GID0gMWUxODsKCmludCBuLCBrLCBkcG1pblttYXhuICsgMTBdLCBkcG1heFttYXhuICsgMTBdOwpsbCBhW21heG4gKyAxMF0sIGFucyA9IExJTkYsIHByZVttYXhuICsgMTBdOwp2ZWN0b3I8bGw+IHM7CmRlcXVlPGludD4gZHE7Cgpib29sIGNoZWNrKGxsIGwsIGxsIHIpCnsKICAgIG1lbXNldChkcG1pbiwgMCwgc2l6ZW9mIGRwbWluKTsKICAgIG1lbXNldChkcG1heCwgMCwgc2l6ZW9mIGRwbWF4KTsKICAgIHdoaWxlIChkcS5zaXplKCkpCiAgICAgICAgZHEucG9wX2JhY2soKTsKCiAgICBpbnQgcCA9IDEsIHEgPSAxOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICB3aGlsZSAocHJlW2ldIC0gcHJlW3AgLSAxXSA+PSBsKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGRwbWluW3AgLSAxXSAhPSBJTkYpCiAgICAgICAgICAgICAgICBkcS5wdXNoX2JhY2socCAtIDEpOwogICAgICAgICAgICBwKys7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChwcmVbaV0gLSBwcmVbcSAtIDFdID4gcikKICAgICAgICAgICAgcSsrOwogICAgICAgIHdoaWxlIChkcS5zaXplKCkgJiYgZHEuZnJvbnQoKSA8IHEgLSAxKQogICAgICAgICAgICBkcS5wb3BfZnJvbnQoKTsKICAgICAgICBpZiAoZHEuc2l6ZSgpKQogICAgICAgIHsKICAgICAgICAgICAgZHBtaW5baV0gPSBkcG1pbltkcS5mcm9udCgpXSArIDE7CiAgICAgICAgICAgIGRwbWF4W2ldID0gZHBtYXhbZHEuYmFjaygpXSArIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgZHBtaW5baV0gPSBkcG1heFtpXSA9IElORjsKICAgIH0KCi8vICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKLy8gICAgICAgIGNvdXQgPDwgZHBtaW5baV0gPDwgJyAnIDw8IGRwbWF4W2ldLCBlbDsKICAgIHJldHVybiBkcG1pbltuXSA8PSBrICYmIGsgPD0gZHBtYXhbbl07Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4oIkdJRlRTLklOUCIsICJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbigiR0lGVFMuSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiR0lGVFMuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGNpbiA+PiBuID4+IGs7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgcHJlW2ldID0gcHJlW2kgLSAxXSArIGFbaV07CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPD0gbjsgaisrKQogICAgICAgICAgICBzLnB1c2hfYmFjayhwcmVbal0gLSBwcmVbaSAtIDFdKTsKICAgIHNvcnQocy5iZWdpbigpLCBzLmVuZCgpKTsKICAgIGludCBqID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5zaXplKCk7IGkrKykKICAgIHsKICAgICAgICB3aGlsZSAoY2hlY2soc1tqXSwgc1tpXSkpCiAgICAgICAgewogICAgICAgICAgICBhbnMgPSBtaW4oYW5zLCBzW2ldIC0gc1tqXSk7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFuczsKfQ==