#include <iostream>
#include <set>
using namespace std;

const int WIDTH_LIMIT = 1500000;

int main()
{
	int m, n;
	while( cin >> m >> n && ( m || n ) ){
		int memo[ 100 ][ 100 ] = {0};
		set< int > width;
		for( int i = 0; i < n; ++i ){
			cin >> memo[ i ][ i ];
			width.insert( memo[ i ][ i ] );
		}
		for( int i = 0; i < n - 1; ++i ){
			for( int j = i + 1; j < n; ++j ){
				memo[ i ][ j ] = memo[ i ][ j - 1 ] + memo[ j ][ j ];
				width.insert( memo[ i ][ j ] );
			}
		}
		set< int >::iterator itr = width.begin();
		while( itr != width.end() ){
			int w = *itr;
			int b = 0;
			int s = 0;
			while( b < n && s < m ){
				int p = b;
				while( p < n && memo[ b ][ p ] <= w ){
					++p;
				}
				--p;
				if( b > p ){
					break;
				}
				++s;
				b = p + 1;
			}
			if( b == n ){
				cout << w << endl;
				break;
			}
			++itr;
		}
	}

	return 0;
}