#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <cassert>
#include <bitset>
using namespace std;

typedef pair<int, int> P;
#define rep(i, n) for (int i=0; i<(n); i++)
#define all(c) (c).begin(), (c).end()
#define uniq(c) c.erase(unique(all(c)), (c).end())
#define _1 first
#define _2 second
#define pb push_back
#define INF 1145141919
#define MOD 1000000007

int M, N;
int A[100];

int f(int X) {
  int s = 1;
  int w = X;
  rep(i, N) {
    if (w >= A[i]) {
      w -= A[i];
    }
    else {
      s++;
      w = X - A[i];
      if (w < 0) return false;
    }
  }
  return s;
}

signed main() {
  ios::sync_with_stdio(false); cin.tie(0);
  while (cin >> M >> N) {
    if (N == 0 && M == 0) break;
    rep(i, N) cin >> A[i];
    int lo = *max_element(A, A+N) - 1, hi = 3000000;
    while (hi - lo > 1) {
      int mid = (lo + hi) / 2;
      if (f(mid) <= M) hi = mid;
      else lo = mid;
    }
    cout << hi << "\n";
  }
  return 0;
}