#include <iostream>
#include <queue>
#include <map>
#include <algorithm>
using namespace std;

int m,n;

vector<int> item;
int test(int W){
	int w = 0,r=0;
	for(int i = 0 ; i < item.size() ; i++){
		if( w - item[i] < 0 ){
			r++;
			w = W;
		}
		w -= item[i];
	}
	return r <= n;
}
int main(){

	while(cin >> n >> m && n){
		item.clear();
		int l = 0 , r = 1000000;
		for(int i = 0 ; i < m ; i++){
			int a;
			cin >> a;
			l = max(l,a);
			item.push_back(a);
		}
		while(l!=r){
			int M = (l+r) / 2;
			if( test(M) ){
				r = M;
			}else{
				l = M+1;
			}
		}
		cout << r << endl;
	}
}