#include #include #include using namespace std; const int N = 100010; int n; string s[N]; /** * 1.n>=53肯定无解,单个字母重复 * 2.2_SAT??? */ int main() { // freopen("st.in", "r", stdin); // freopen("st.out", "w", stdout); scanf("%d", &n); for (int i = 0; i < n; ++i) cin >> s[i]; if (n >= 53) { puts("Impossible"); return 0; } else { bool flag = false; set ss; for (int i = 0; i < 1 << n; ++i) { ss.clear(); bool ok = true; for (int j = 0; j < n; ++j) { string a, b; if (i >> j & 1) { a = s[j].substr(0, 1); b = s[j].substr(1, 2); } else { a = s[j].substr(0, 2); b = s[j].substr(2, 1); } if (ss.count(a) || ss.count(b)) { ok = false; break; } ss.insert(a); ss.insert(b); } if (ok) { for (int j = 0; j < n; ++j) { if (i >> j & 1) { cout << s[j][0] << ' ' << s[j][1] << s[j][2] << endl; } else { cout << s[j][0] << s[j][1] << ' ' << s[j][2] << endl; } } flag = true; break; } } if (!flag) { puts("Impossible"); } } return 0; }