#include<cstdio>
#include<algorithm>

using namespace std;

int n,m;
int hon[101];
int nibun(){
	int R,L;R=L=0;
	for(int i=0;i<m;i++){
		L+=hon[i];
	}
	while(1){
		if(R==L){
			return R;
		}
		double H=(double)(R+L)/2;
		
		int dan=0;
		int at=0;
		for(int i=0;i<m;i++){
			if(hon[i]>H){
				dan=10000;
				break;
			}
			if(at+hon[i] <= H){
				at+=hon[i];
			}else{
				at=0;
				dan++;
				at+=hon[i];
			}
		}
		
		if(dan<n){
			L=H;
		}else{
			R=H+0.5;
		}
		
	}
}
int main(){
	int cont=0;
	while(1){
		scanf("%d%d",&n,&m);
		if(n==0&&m==0){
			break;
		}
		for(int i=0;i<m;i++){
			scanf("%d",&hon[i]);
		}
		printf("%d\n",nibun());
	}
}