#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool isValid(ll books, ll studentsGiven, vector<ll> &pages, ll pageLimit) {
    ll studentsNeeded = 1, pagesReadByCurrStudent = pages[0];
    if (pages[0] > pageLimit) {
        return false;
    }
    for (int i = 1; i < books; i++) {
        if (pages[i] > pageLimit) {
            return false;
        }
        if (pagesReadByCurrStudent + pages[i] > pageLimit) {
            studentsNeeded++;
            pagesReadByCurrStudent = 0;
            i--;
        }
        else {
            pagesReadByCurrStudent += pages[i];
        }
    }
    return studentsGiven >= studentsNeeded;
}
ll findMaxPages(ll books, ll students, vector<ll> &pages, ll s, ll e, ll sum) {
    ll pagesRead = e;
    while (s <= e) {
        ll m = s + (e-s)/2;
        if (isValid(books, students, pages, m)) {
            pagesRead = m;
            e = m-1;
        }
        else {
            s = m+1;
        }
    }
    return pagesRead;
}
int main() {
    ll books, students, sum = 0;
    cin >> books >> students;
    vector<ll> pages(books);
    for (ll i = 0; i < books; i++) {
        cin >> pages[i];
        sum += pages[i];
    }
    cout << findMaxPages(books, students, pages, 0, sum, sum);
    return 0;
}