#include<bits/stdc++.h>
using namespace std;
bool is_Answer(int * a,int n,int k,int ans){
int sum=0;
int no_of_painters=0;
for(int i=0;i<n;i++){
if(sum+a[i]<=ans){
sum+=a[i];
}
else{
no_of_painters++;
if(no_of_painters>k)
return false;
sum=a[i];
}
}
if(sum){
no_of_painters++;
if(no_of_painters>k)
return false;
}
return true;
}
int main() {
int k;
int n;
cin>>k>>n;
int a[n],sum=0,Max=0;
for(int i=0;i<n;i++){
cin>>a[i];
Max=max(Max,a[i]);
sum+=a[i];
}
int si=Max,ei=sum;
int ans=0;
while(si<=ei){
int mid=(si+ei)/2;
if(is_Answer(a,n,k,mid)){
ans=mid;
ei=mid-1;
}
else
si=mid+1;
}
cout<<ans<<endl;
return 0;
}