#include #include #include using namespace std; int t[200003]; int res[200003]; multimap mm; multimap ::iterator it; int n, m, i, j, q; bool first; int main() { while (scanf("%d%d", &n, &m), n + m > 0) { memset(t, -1, sizeof t); for (i = 0; i < n; i++) { scanf("%d", &q); for (j = 0; j < m; j++) { if (t[j] <= q) { //printf("%d ", j); //if (t[j].empty()) printf("-\n"); //else printf("%d\n", t[j].back()); //t[j].push(q); t[j] = q; mm.insert(make_pair(q, j)); res[i] = j; break; } } if (j == m) { for (i++; i < n; i++) scanf("%*d"); printf("Transportation failed\n"); goto again; } } printf("%d", res[0] + 1); for (i = 1; i < n; i++) { printf(" %d", res[i] + 1); } printf("\n"); first = true; for (it = mm.begin(); it != mm.end(); ++it) { if (first) first = false; else printf(" "); printf("%d", it->second + 1); } printf("\n"); again: ; mm.clear(); } return 0; }