#include<bits/stdc++.h>
#define r(i,n) for(int i=0;i<n;i++)
using namespace std;
int n,m,a[101],y;
bool nibun(int x){
	int s=0,q=0;
	r(i,n){
		if(s+a[i]<=x)s+=a[i];
		else s=a[i],q++;
	}
	return m>=q+1;
}
main(){
	while(cin>>m>>n,m){
	  y=1e9;
	  r(i,n)cin>>a[i],y=min(y,a[i]);
	  int l=y,r=1e9;
	  while(l<r){
    	int mid=(l+r)/2;
		if(nibun(mid))r=mid;
		else l=mid+1;
	  }
	  cout<<l<<endl;
    }
}