#include <bits/stdc++.h>
bool isPossible(vector<int> arr,int n,int m,int mid)
{
long long timesum=0;
long long daycount=1;
for(int i=0;i<m;i++)
{
if(timesum+arr[i]<=mid)
{
timesum=timesum+arr[i];
}
else
{
daycount++;
if(daycount>n||arr[i]>mid)
{
return false;
}
timesum=arr[i];
}
}
return true;
}
int binary( vector<int> arr,int n,int m)
{
long long sum=0;
for(int i=0;i<m;i++)
{
sum=sum+arr[i];
}
long long st=0,end=sum;
long long mid=st+(end-st)/2;
long long ans=0;
while(st<=end)
{
if(isPossible(arr,n,m,mid))
{
ans=mid;
end=mid-1;
}
else
{
st=mid+1;
}
mid=st+(end-st)/2;
}
return ans;
}
long long ayushGivesNinjatest(int n, int m, vector<int> arr)
{
// Write your code here.
int c=binary(arr,n,m);
return c;
}