#include #include #include #include using namespace std; int POSX[1024]; int POSY[1024]; int TABLE[1024][1024]; void Init(int m) { memset(TABLE, 0, sizeof(TABLE)); for (int i = 1; i <= m; ++i){ POSX[i] = i; POSY[i] = 0; TABLE[i][0] = i; } } void Move(int x, int y, int xx, int yy) { if (x == xx){ cerr << "hoge" << endl; return; } int num = TABLE[x][y]; //fprintf(stderr, "Move x:%d y:%d xx:%d yy:%d num:%d\n", x, y, xx, yy, num); TABLE[x][y] = 0; TABLE[xx][yy] = num; POSX[num] = xx; POSY[num] = yy; } void Move(int x, int y, int xx) { //fprintf(stderr, "Move x:%d y:%d xx:%d\n", x, y, xx); //if (x == 0 || xx == 0){ //cerr << "ERROR! Move(x, y, xx)" << endl; //} //if (TABLE[x][y] == x && y == 0){ //cerr << "hugo" << endl; //return; //} for (int yy = 0; ; ++yy){ if (TABLE[xx][yy] == 0){ Move(x, y, xx, yy); return; } } } void Return(int x, int y) { int yy = y; while (TABLE[x][y]){ ++y; } --y; for (; y >= yy; --y){ if (y == 0){ break; } Move(x, y, TABLE[x][y]); } } void Take(int a, int b) { int ax = POSX[a]; int ay = POSY[a]; int bx = POSX[b]; int by = POSY[b]; if (b == 0){ if (ay == 0){ return; } Return(ax, ay); return; } //fprintf(stderr, "Take %d %d ax:%d ay:%d bx:%d by:%d\n", a, b ,ax, ay, bx, by); if (ax == bx){ if (ay > by){ return; } Return(ax, ay); ax = POSX[a]; ay = POSY[a]; bx = POSX[b]; by = POSY[b]; } else { if (TABLE[ax][ay + 1]){ int x = ax; for (int y = ay + 1; TABLE[x][y]; ++y){ Move(x, y, TABLE[x][y]); } } } Move(ax, ay, bx); } void PrintAnswer(int m) { int answer[m]; for (int i = 0; i < m; ++i){ int x = i + 1; for (int y = 0; ; ++y){ if (TABLE[x][y] == 0){ answer[i] = y; break; } } } sort(answer, answer + m); for (int i = 0; i < m; ++i){ if (answer[i]){ cout << answer[i] << endl; } } cout << "end" << endl; } void PrintPile(int m) { for (int x = 1; x <= m; ++x){ cerr << x << ":"; for (int y = 0; TABLE[x][y]; ++y){ cerr << TABLE[x][y] << " "; } cerr << endl; } } main() { int m; while (cin >> m && m){ Init(m); int a, b; while (cin >> a >> b && (a || b)){ if (a == b){ continue; } Take(a, b); //PrintPile(m); } PrintAnswer(m); } }