#include using namespace std; const int N = 1e5 + 5; string ans[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector> vec; for (int i = 0; i < n; i++) { string s; cin >> s; vec.push_back({s, i}); } sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { return a.first[1] > b.first[1]; }); set used; bool impossible = false; for (auto& p : vec) { string s = p.first; string s1 = s.substr(0, 1); string s2 = s.substr(1, 2); if (used.find(s1) == used.end() && used.find(s2) == used.end()) { used.insert(s1); used.insert(s2); ans[p.second] = s1 + " " + s2; } else { s1 = s.substr(0, 2); s2 = s.substr(2, 1); if (used.find(s1) == used.end() && used.find(s2) == used.end()) { used.insert(s1); used.insert(s2); ans[p.second] = s1 + " " + s2; } else { impossible = true; break; } } } if (impossible) { cout << "Impossible\n"; } else { for (int i = 0; i < n; i++) { cout << ans[i] << '\n'; } } return 0; }