#include #include #include #include using namespace std; int main() { int m; while (cin >> m && m != 0) { vector > state; for (int i = 1; i <= m; i++) { vector tmp; tmp.push_back(i); state.push_back(tmp); } while (true) { int a, b; cin >> a >> b; if (a == 0 && b == 0) { break; } int A, B; int indexA, indexB; for (int i = 0; i < state.size(); i++) { for (int j = 0; j < state[i].size(); j++) { if (state[i][j] == a) { A = i; indexA = j; } if (state[i][j] == b) { B = i; indexB = j; } } } if (a == b) { } else if (b == 0) { if (indexA == 0) { } else { for (int i = indexA; i < state[A].size(); i++) { if (state[A][i] == -1) { continue; } vector tmp; tmp.push_back(state[A][i]); state.push_back(tmp); state[A][i] = -1; } } } else { if (A == B) { // a == f // b == l if (indexA > indexB) {/* ignore */ } else { for (int i = indexA; i < state[A].size(); i++) { if (state[A][i] == -1) { continue; } if (state[A][i] == b) { continue; } else if (state[A][i] == a) { } else { vector tmp; tmp.push_back(state[A][i]); state.push_back(tmp); state[A][i] = -1; } } } } else { for (int i = indexA + 1; i < state[A].size(); i++) { if (state[A][i] == -1) { continue; } vector tmp; tmp.push_back(state[A][i]); state.push_back(tmp); state[A][i] = -1; } state[B].push_back(state[A][indexA]); state[A][indexA] = -1; } } } vector ans; for (int i = 0; i < state.size(); i++) { int count = 0; for (int j = 0; j < state[i].size(); j++) { if (state[i][j] != -1) { count++; } } if (count == 0) { continue; } ans.push_back(count); } sort(ans.begin(), ans.end()); for (int i = 0; i < ans.size(); i++) { cout << ans[i] << endl; } cout << "end" << endl; } return 0; }