#include typedef struct box { int h; int o; int order; } box; int cmp(box a, box b) { if (a.h < b.h) return -1; if (a.h > b.h) return 1; if (a.h == b.h) { if (a.o < b.o) return -1; if (a.o > b.o) return 1; } return 0; } int main() { box a[100001]; int b[100001]; int num; int n; box min; int mini; int res[100001]; while (1) { int Z = 0; int count = 0; scanf("%d", &num); if (num == 0) return 0; for (int i = 0; i < num; i++) { b[i] = 0; } for (int i = 0; i < num; i++) { scanf("%d", &n); a[i].h = n; a[i].o = b[n]++; a[i].order = count++; } box min; for (int i = 0; i < count; i++) { min.h = 2000000000; min.o = 12; min.order = 12; for (int j = 0; j < count; j++) { if (a[j].order >= i) { if (cmp(a[j], min) == -1) { min.h = a[j].h; min.o = a[j].o; min.order = a[j].order; } } } //printf("min %d %d %d\n", min.h, min.o, min.order); for (int j = 0; j < count; j++) { //printf("%d ", i); if ((a[j].order >= i) && (a[j].order <= min.order)) { /*printf("%d", j); printf(".");*/ a[j].order = min.order + i - a[j].order; //printf("%d--", a[j].order); } } /* for (int j = 0; j < count; j++) { printf("%d ", a[j].order); } printf("--\n");*/ res[Z++] = min.order; } for (int i = 0; i < count; i++) { printf("%d ", res[i] + 1); } printf("\n"); } }