#include <bits/stdc++.h>
using namespace std;

const int INF = 1 << 28;

int m, n;
int t[100];
int out[100];

void solve()
{
	vector<int> res;
	stack<int> st[10];
	queue<int> que;
	
	fill(out, out + 100, INF);
	
	int time = 0;
	while (res.size() < n){
//		printf("%d\n", time);
//		for (int i = 0; i < 10000; i++) printf("");
		
//		for (int i = 0; i < n; i++) printf("%d ", out[i]);
//		puts("");
		
		for (int i = 0; i < m; i++){
			while (st[i].size() && out[st[i].top()] <= time){
				int a = st[i].top(); st[i].pop();
				out[a] = INF;
				res.push_back(a);
//					printf("out %d\n", a);
			}
		}
		
		if (time % 10 == 0 && time / 10 < n){
			que.push(time / 10);
//				printf("wait %d\n", time / 10);
		}
		
		while (que.size()){
			int a = que.front();
			bool f = false;
			int ot = time + t[a];
			
			for (int i = 0; i < m; i++){
				if (st[i].size()) continue;
				st[i].push(a);
				out[a] = ot;
				que.pop();
				f = true;
//					printf("in %d\n", a);
				break;
			}
			if (f) continue;
			
			int mini = -1;
			for (int i = 0; i < m; i++){
				if (st[i].size() == 2) continue;
				if (out[st[i].top()] < ot) continue;
				if (mini == -1){
					mini = i;
				}
				else if (out[st[mini].top()] > out[st[i].top()]){
					mini = i;
				}
			}
			if (~mini){
				st[mini].push(a);
				out[a] = ot;
				que.pop();
//				printf("in %d\n", a);
				continue;
			}
			
			mini = -1;
			for (int i = 0; i < m; i++){
				if (st[i].size() == 2) continue;
				if (mini == -1){
					mini = i;
				}
				else if (out[st[mini].top()] < out[st[i].top()]){
					mini = i;
				}
			}
			if (~mini){
				st[mini].push(a);
				out[a] = ot;
				que.pop();
//				printf("in %d\n", a);
				continue;
			}
		}
		
		time++;
	}
	
	for (int i = 0; i < res.size(); i++){
		if (i) printf(" ");
		printf("%d", ++res[i]);
	}
	puts("");
}

int main()
{
	while (scanf("%d %d", &m, &n), m){
		for (int i = 0; i < n; i++){
			scanf("%d", &t[i]);
		}
		solve();
	}
	return 0;
}