using System; using System.Collections.Generic; using System.Collections; using System.Collections.Specialized; using System.Linq; using System.Text; using System.IO; using System.Reflection; using static System.Math; using System.Numerics; static class Program{ const int mod=(int)1e9+7; static void Main(){ Sc sc=new Sc(); var s=sc.Ia; if(s[0]>=26<<2){ Console.WriteLine("Impossible"); return; } var t=new string[s[0]]; var sat=new Tsat(s[0]); for(int i = 0;i=0;j--) { if(t[i][0]==t[j][0]||t[i][1]+""+t[i][2]==t[j][1]+""+t[j][2]){ sat.Edge(i<<1,(j<<1)+1); sat.Edge(j<<1,(i<<1)+1); } if(t[i][0]+""+t[i][1]==t[j][0]+""+t[j][1]||t[i][2]==t[j][2]){ sat.Edge((i<<1)+1,j<<1); sat.Edge((j<<1)+1,i<<1); } if(t[i][0]==t[j][2]||t[i][1]+""+t[i][2]==t[j][0]+""+t[j][1]){ sat.Edge(i<<1,j<<1); sat.Edge((j<<1)+1,(i<<1)+1); } if(t[i][2]==t[j][0]||t[i][0]+""+t[i][1]==t[j][1]+""+t[j][2]){ sat.Edge((i<<1)+1,(j<<1)+1); sat.Edge(j<<1,i<<1); } } } sat.Scc(); StringBuilder sb=new StringBuilder(); for(int i = 0;isat.zt[p+1]?(t[i][0]+" "+t[i][1]+""+t[i][2]):(t[i][0]+""+t[i][1]+" "+t[i][2]))+"\n"); } Console.Write(sb); } } public class Tsat{ public List[] li,lir,lid; public int[] zt; private int n; public Tsat(int n){ this.n=n<<1; li=new List[this.n]; lir=new List[this.n]; for(int i=0;i(); lir[i]=new List(); } } public void Edge(int a,int b){ li[a].Add(b); lir[b].Add(a); } public void Edge(int a,int c,int b,int d){ a=(a<<1)+c;b=(b<<1)+d; li[a].Add(b); lir[b].Add(a); } public void Scc(){ var h=new int[n]; var b=new bool[n]; zt=new int[n]; int kk=n-1,km=0; for(int i=0;i[km]; for(int i=0;i();} for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i(int n,Func f){var a=new T[n];for(int i=0;i