#include<cstdio>
#include<iostream>
#include<vector>
#include<string>
#include<deque>
#include<map>
#include<algorithm>

using namespace std;

int main(){
	int R,L;
	int n,m;
	int hon[100];
	while(1){
		scanf("%d%d",&n,&m);
		if(n==0&&m==0){
			break;
		}
		R=L=0;
		for(int i=0;i<m;i++){
			scanf("%d",&hon[i]);
			L+=hon[i];
		}
		if(n>=m){
			printf("%d\n",*max_element(hon,hon+n));
			continue;
		}
		//3 9 5 3 8 2 1 6 9 7 4
		while(1){
			if(R==L){
				printf("%d\n",R);
				break;
			}
			double H=(double)(R+L)/2;
			
			int dan=0;
			int at=0;
			for(int i=0;i<m;i++){
				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;
			}
			
		}
	}
}