#include<bits/stdc++.h>
using namespace std;
#define int long long int
#define endl "\n"
int solve(int *arr, int n, int time) {
int painters = 1;
int init = arr[0];
for (int i = 1; i < n; i++) {
if (init + arr[i] > time) {
init = arr[i];
painters++;
} else if (init + arr[i] == time) {
init = 0;
painters++;
} else
init += arr[i];
}
return painters;
}
int32_t main()
{ ios_base::sync_with_stdio(false);
cin.tie(NULL);
int K, n;
cin >> K >> n;
int *arr = new int[n];
int mx = INT_MIN, sum = 0;
for (int i = 0; i < n; i++) {
cin >> arr[i];
sum += arr[i];
mx = max(mx, arr[i]);
}
//Search space.
int s = mx, e = sum, ans = INT_MAX;
while (s <= e) {
int mid = (s + e) / 2;
int painters = solve(arr, n, mid);
if (painters <= K) { //Valid, find min time.
ans = min(mid, ans);
e = mid - 1;
} else
s = mid + 1;
}
cout << ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nIGludAojZGVmaW5lIGVuZGwgCSJcbiIKCmludCBzb2x2ZShpbnQgKmFyciwgaW50IG4sIGludCB0aW1lKSB7CglpbnQgcGFpbnRlcnMgPSAxOwoJaW50IGluaXQgPSBhcnJbMF07Cglmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewoJCWlmIChpbml0ICsgYXJyW2ldID4gdGltZSkgewoJCQlpbml0ID0gYXJyW2ldOwoJCQlwYWludGVycysrOwoJCX0gZWxzZSBpZiAoaW5pdCArIGFycltpXSA9PSB0aW1lKSB7CgkJCWluaXQgPSAwOwoJCQlwYWludGVycysrOwoJCX0gZWxzZQoJCQlpbml0ICs9IGFycltpXTsKCX0KCXJldHVybiBwYWludGVyczsKfQoKaW50MzJfdCBtYWluKCkKewlpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoTlVMTCk7CgoJaW50IEssIG47CgljaW4gPj4gSyA+PiBuOwoJaW50ICphcnIgPSBuZXcgaW50W25dOwoJaW50IG14ID0gSU5UX01JTiwgc3VtID0gMDsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJY2luID4+IGFycltpXTsKCQlzdW0gKz0gYXJyW2ldOwoJCW14ID0gbWF4KG14LCBhcnJbaV0pOwoJfQoKCS8vU2VhcmNoIHNwYWNlLgoJaW50IHMgPSBteCwgZSA9IHN1bSwgYW5zID0gSU5UX01BWDsKCXdoaWxlIChzIDw9IGUpIHsKCQlpbnQgbWlkID0gKHMgKyBlKSAvIDI7CgkJaW50IHBhaW50ZXJzID0gc29sdmUoYXJyLCBuLCBtaWQpOwoKCQlpZiAocGFpbnRlcnMgPD0gSykgeyAvL1ZhbGlkLCBmaW5kIG1pbiB0aW1lLgoJCQlhbnMgPSBtaW4obWlkLCBhbnMpOwoJCQllID0gbWlkIC0gMTsKCQl9IGVsc2UKCQkJcyA9IG1pZCArIDE7Cgl9Cgljb3V0IDw8IGFuczsKCXJldHVybiAwOwp9