#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("fast-math")
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, k, st, dr, v[16005], mid, sol, cnt, sum, maxi = -100000, mini = 100000;
ifstream fin("transport.in");
ofstream fout("transport.out");
int32_t main()
{
fin >> n >> k;
for(int i = 1; i <= n; ++i)
{
fin >> v[i];
maxi = max(maxi, v[i]);
}
st = 1, dr = 256000000;
while(st <= dr)
{
mid = st + (dr - st) / 2;
sum = cnt = 0;
bool ok = true;
for(int i = 1; i <= n && ok == true; ++i)
{
if(v[i] > mid)
{
ok = false;
break;
}
sum += v[i];
if(sum > mid)
{
sum = v[i];
cnt++;
}
}
if(cnt <= k && ok == true)
{
sol = mid;
dr = mid - 1;
}
else
st = mid + 1;
}
fout << sol;
return 0;
}