#include #include using namespace std; int main() { queue *rails[200000]; queue first; long rf[200000]; long res[2][200000]; long c, r, i, j, k, min, minp, minc, ri; bool failed; while (1) { scanf("%ld%ld", &c, &r); if (!c && !r) break; for (i = 0; i < r; i++) rails[i] = new queue(); minc = 0x3FFFFFFF; for (i = 0; i < c; i++) { scanf("%ld", &j); first.push(j); if (minc > j) minc = j; } for (i = 0; i < r; i++) rf[i] = -1; failed = false; ri = 0; while (!first.empty()) { j = first.front(); first.pop(); min = 0x3FFFFFFF; minp = -1; for (i = 0; i < r; i++) if (j - rf[i] >= 0 && min > j - rf[i]) { min = j - rf[i]; minp = i; } if (minp == -1) for (i = 0; i < r && minp == -1; i++) if (rf[i] == -1) minp = i; if (minp == -1) { printf("Transportation failed\n"); failed = true; break; } rails[minp]->push(j); rf[minp] = j; /*printf("%ld ", minp + 1);*/ res[0][ri++] = minp + 1; } k = minc; for (i = 0; i < c && !failed; i++) { min = 0x3FFFFFFF; minp = -1; for (j = 0; j < r && min > 0; j++) if (rails[j]->front() - k >= 0 && min > rails[j]->front() - k) { min = rails[j]->front() - k; minp = j; } if (minp == -1) { printf("Transportation failed\n"); failed = true; break; } rails[minp]->pop(); /*printf("%ld ", minp + 1);*/ res[1][i] = minp + 1; } for (i = 0; i < 2 && !failed; i++) { for (j = 0; j < c; j++) printf(j < c - 1 ? "%ld " : "%ld", res[i][j]); printf("\n"); } for (i = 0; i < r; i++) delete rails[i]; } return 0; }