#include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, a, b) for(int i = (a); i < int(b); ++i) #define repto(i, b) rep(i, 0, b) #define trav(it, v) for(typeof((v).begin()) it = (v).begin(); \ it != (v).end(); ++it) using namespace std; typedef unsigned int nat; class Warrior { public: Warrior() : left{this-1}, right{this+1} {} Warrior *left; Warrior *right; string id; }; int main() { nat num_soldiers, num_bombs; Warrior sentinel; sentinel.id = "*"; while(true) { cin >> num_soldiers >> num_bombs; if(!num_soldiers) break; vector front_line(num_soldiers); repto(i, num_soldiers) { front_line[i].id = to_string(i+1); } front_line.front().left = &sentinel; front_line.back().right = &sentinel; repto(i, num_bombs) { nat l, r; cin >> l >> r; front_line[l-1].left->right = front_line[r-1].right; front_line[r-1].right->left = front_line[l-1].left; cout << front_line[l-1].left->id << " " << front_line[r-1].right->id << endl; } cout << "-" << endl; } return 0; }