#include <cstdio>
using namespace std;
#define MAXN 50010
#define REP(i, n)for(int i=0; i<int(n); i++)
int f[MAXN], s[MAXN], lm[MAXN];
int w, n, x;
int main()
{
    while(scanf("%d%d", &w, &n)==2 && w != 0){
        s[0] = 0;
        REP(i, n){
            scanf("%d", &x);
            s[i+1] = s[i] + x;
        }
        int maxi = n;
        while(maxi > 0 && w - s[n] + s[maxi-1] >= n - maxi)maxi--;
        for(int i = 2, t = 0; i <= n; i++){
            while(w - s[i] + s[t] < i - t - 1) t++;
            lm[i] = t;
        }
        int l = 1, h = w;
        for(; l + 1 < h;){
            int maxoki = 0, mid = (l + h - 1) / 2;
            f[0] = 0; f[2] = f[1] = 1;
            for(int i = 2, l = 0, r = 0; i <= n; i++){
                l = lm[i];
                while(r + 1 < i && w - s[i] + s[r] <= mid * (i - r - 1)) r++;
                if(l < r && (f[r] - f[l] > 0)){
                    f[i + 1] = f[i] + 1;
                    maxoki = i;
                } else f[i + 1] = f[i];
            }
            if(maxoki >= maxi) h = mid + 1; else l = mid + 1;
        }
        printf("%d\n", l);
    }
}
