#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>

#define rep(i,x) for(i=0;i<x;i++)
#define rrep(i,x) for(i=x-1;i>=0;i--)
#define rep_to(a,i,x) for(i=a;i<x;i++)
#define si_1(x) scanf("%d",&x);
#define si_2(x,y) scanf("%d %d",&x,&y);
#define debug(x) printf("x:%d\n",x);

int main()
{
	int i=0,j=0,n,m;
	int mark,num[114]={};
	int min=0,max=0,len=0;
	int flag=0;

	si_2(m,n);
	rep(i,n)
	{
		si_1(num[i]);
		max+=num[i];
	}
	while(min<=max)
	{
		mark=(min+max)/2;
		flag=0;
		i=0;
		j=0;
		while(1)
		{
			++i;
			len=0;
			for(;j<n;j++)
			{
				if(mark<=len+num[j])
				{
					break;
				}
				else len+=num[j];
			}
			if(i<=m && j==n)//?¶?????????¬?????\??£??????
			{				
				flag=1;
				break;
			}
			else if(i>m)//??\?????????????????£??????
			{
				flag=0;
				break;
			}
		}
		if(flag==0)min=mark+1;
		else if(flag==1)max=mark-1;
	}
	printf("%d\n",(min+max)/2);
	return 0;
}