#include using namespace std; const int N = 1e5 + 5; string ans[N]; struct node { string s; int idx, cnt; } a[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; map freq; for (int i = 0; i < n; i++) { cin >> a[i].s; a[i].idx = i; freq[a[i].s[1]]++; } for (int i = 0; i < n; i++) { a[i].cnt = freq[a[i].s[1]]; } sort(a, a + n, [](const node &x, const node &y) { return x.cnt > y.cnt; }); set used; bool impossible = false; for (int i = 0; i < n; i++) { string s = a[i].s; 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[a[i].idx] = s1 + " " + s2; continue; } 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[a[i].idx] = s1 + " " + s2; continue; } impossible = true; break; } if (impossible) { cout << "Impossible\n"; } else { for (int i = 0; i < n; i++) { cout << ans[i] << '\n'; } } return 0; }