#include <iostream>
using namespace std;

int DP[100][20];
int main()
{
	int n,m;
	while(cin >> m >> n){
		if(!m && !n)
			break;
		for(int i=0;i<n;i++){
			int book;
			cin >> book;
			if(i==0)
				for(int j=0;j<m;j++){
					DP[i][j] = book;
				}
			else{
				DP[i][0] = DP[i-1][0]+book;
			}
		}
		
		for(int i=1;i<=n;i++){
			for(int j=1;j<m;j++){
				DP[i][j] = max(DP[i][0]-DP[i-1][0],DP[i-1][j-1]);
				for(int k=i-2;k>=0;k--){
					if(DP[i][0]-DP[k][0] >= DP[k][j-1]){
						DP[i][j] = min(DP[i][j],DP[i][0]-DP[k][0]);
						break;
					}else{
						DP[i][j] = min(DP[i][j],DP[k][j-1]);
					}
				}
			}
		}
		
		cout << DP[n-1][m-1] << endl;
	}
	return 0;
}