#include <bits/stdc++.h>
using namespace std;
#define rw(name) if (fopen(name".inp", "r"))  freopen(name".inp", "r", stdin), freopen(name".out", "w", stdout)
#define ios ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
#define ll long long
#define vi vector <ll>

vi cv;
ll n, m, k, i;

bool check(ll t) {
    priority_queue<ll, vector<ll>, greater<ll>> may;
    
    for (ll i = 1; i <= m; i++) may.push(0);
    
    for (ll it : cv) {
        ll tmp = may.top();
        may.pop();
        
        if (tmp + it > t) return false;
        
        may.push(tmp + it);
    }
    return true;
}

ll binary (ll l, ll r) { 
    ll ans = 0;
    while (l <= r) {
        ll mid = (l + r) / 2;
        if (check(mid)) {
            ans = mid;
            r = mid - 1;
        } else {
            l = mid + 1;
        }
    }
    return ans; 
}

int main() { 
    ios;
   
    cin >> n >> m;
    ll x; ll s=0;
    for (ll i = 1; i <= n; i++) {    
        cin >> x;
        cv.push_back(x);
        s+=x;
    }

    cout << binary(1,s);

    return 0;
}
