#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
vector<ll> arr;
pair<int, int> picked[301][301];
int n, m;
ll table[301][301];
ll solve(int i, int e)
{
if (e == 1)
{
ll ret = 0;
for (int j = i; j < n; j++)
ret += arr[j];
picked[i][e] = make_pair(n-i, -1);
return ret;
}
if (i >= n)
return 99999;
if (e < 0)
return 0;
ll currVal = arr[i];
if (table[i][e] != -1)
return table[i][e];
ll &ret = table[i][e] = 99999999;
for (int j = i + 1; j < n; j++)
{
if (ret >= max(currVal, solve(j, e - 1)))
picked[i][e] = make_pair(j - i, j);
ret = min(ret, max(currVal, solve(j, e - 1)));
currVal += arr[j];
}
return ret;
}
int construct(int i,int e)
{
auto x = picked[i][e];
if (x.first == -1 && x.second == -1)
return 0;
cout << x.first << ' ';
construct(x.second, e - 1);
return 0;
}
int main()
{
for (int i = 0; i < 301;i++)
for (int j = 0; j < 301; j++)
table[i][j] = -1;
cin >> n >> m;
arr.resize(n);
for (auto &i : arr)
cin >> i;
cout<<solve(0, m) << endl;
construct(0, m);
cout << endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCnZlY3RvcjxsbD4gYXJyOwpwYWlyPGludCwgaW50PiBwaWNrZWRbMzAxXVszMDFdOwppbnQgbiwgbTsKbGwgdGFibGVbMzAxXVszMDFdOwpsbCBzb2x2ZShpbnQgaSwgaW50IGUpCnsKCWlmIChlID09IDEpCgl7CgkJbGwgcmV0ID0gMDsKCQlmb3IgKGludCBqID0gaTsgaiA8IG47IGorKykKCQkJcmV0ICs9IGFycltqXTsKCQlwaWNrZWRbaV1bZV0gPSBtYWtlX3BhaXIobi1pLCAtMSk7CgkJcmV0dXJuIHJldDsKCgl9CglpZiAoaSA+PSBuKQoJCXJldHVybiA5OTk5OTsKCWlmIChlIDwgMCkKCQlyZXR1cm4gMDsKCWxsIGN1cnJWYWwgPSBhcnJbaV07CglpZiAodGFibGVbaV1bZV0gIT0gLTEpCgkJcmV0dXJuIHRhYmxlW2ldW2VdOwoJbGwgJnJldCA9IHRhYmxlW2ldW2VdID0gOTk5OTk5OTk7Cglmb3IgKGludCBqID0gaSArIDE7IGogPCBuOyBqKyspCgl7CgkJaWYgKHJldCA+PSBtYXgoY3VyclZhbCwgc29sdmUoaiwgZSAtIDEpKSkKCQkJcGlja2VkW2ldW2VdID0gbWFrZV9wYWlyKGogLSBpLCBqKTsKCQlyZXQgPSBtaW4ocmV0LCBtYXgoY3VyclZhbCwgc29sdmUoaiwgZSAtIDEpKSk7CgkJY3VyclZhbCArPSBhcnJbal07Cgl9CglyZXR1cm4gcmV0Owp9CmludCBjb25zdHJ1Y3QoaW50IGksaW50IGUpCnsKCWF1dG8geCA9IHBpY2tlZFtpXVtlXTsKCWlmICh4LmZpcnN0ID09IC0xICYmIHguc2Vjb25kID09IC0xKQoJCXJldHVybiAwOwoJY291dCA8PCB4LmZpcnN0IDw8ICcgJzsKCWNvbnN0cnVjdCh4LnNlY29uZCwgZSAtIDEpOwoJcmV0dXJuIDA7Cn0KaW50IG1haW4oKQp7Cglmb3IgKGludCBpID0gMDsgaSA8IDMwMTtpKyspCglmb3IgKGludCBqID0gMDsgaiA8IDMwMTsgaisrKQoJCXRhYmxlW2ldW2pdID0gLTE7CgljaW4gPj4gbiA+PiBtOwoJYXJyLnJlc2l6ZShuKTsKCWZvciAoYXV0byAmaSA6IGFycikKCQljaW4gPj4gaTsKCWNvdXQ8PHNvbHZlKDAsIG0pIDw8IGVuZGw7Cgljb25zdHJ1Y3QoMCwgbSk7Cgljb3V0IDw8IGVuZGw7Cn0K