#include
#define int long long //added
using namespace std;
#include
#include
bool poss(int a[],int n,int s,int minpg){
int st=1;
int pgs=0;
for(int i=0;i<n;i++){
if(pgs+a[i]>minpg){
st++;
pgs=a[i];
if(st>s){
return false;
}
}
else{
pgs+=a[i];
}
}
return true;
}
int32_t main () {
int n,k;
cin>>k>>n;
int a[n];
int t=0;
for(int i=0;i<n;i++){
cin>>a[i];
t+=a[i];
}
sort(a,a+n)
int s=a[n-1];
int e=t;
int ans=t;
while(s<=e){
int mid=(s+e)/2;
if(poss(a,n,k,mid)){
ans=mid;
e=mid-1;
}
else{
s=mid+1;
}
}
cout<<ans<<endl;
return 0;
}