// 2011/02/22 Tazoe
// Partition Problem

#include <iostream>
using namespace std;

int main()
{
	while(true){
		int m, n;
		cin >> m >> n;
		if(m==0&&n==0)
			break;

		int S[101];
		for(int i=1; i<=n; i++)
			cin >> S[i];

		int P[101];		// S[1]ツつゥツづァS[i]ツづ慊づづ個債計
		int sum = 0;
		for(int i=1; i<=n; i++){
			sum += S[i];
			P[i] = sum;
		}

		int M[101][21];		// iツ氾板姪堋づ慊づづ個要ツ素ツづーツ使ツつ「jツ暗按可コツづ個閉板閉ェツづ可閉ェツ環つオツつスツづつォツづ個催適ツ嘉ー

		for(int i=1; i<=n; i++)
			M[i][1] = P[i];

		for(int j=1; j<=m; j++)
			M[1][j] = S[1];

		for(int i=2; i<=n; i++){
			for(int j=2; j<=m; j++){
				int tmp_min;
				if(M[1][j-1]>P[i]-P[1])
					tmp_min = M[1][j-1];
				else
					tmp_min = P[i]-P[1];
				for(int x=2; x<=i-1; x++){
					int tmp;
					if(M[x][j-1]>P[i]-P[x])
						tmp = M[x][j-1];
					else
						tmp = P[i]-P[x];
					if(tmp<tmp_min)
						tmp_min = tmp;
				}
				M[i][j] = tmp_min;
			}
		}

		cout << M[n][m] << endl;
	}

	return 0;
}