A - Crucigrama

Languages: C, C++, Java, JavaScript, Haskell, Tiger, Python, Pascal, C#
Time & Memory limits: (details)

Fito ahora está tratando de hacer un crucigrama muy peculiar y nuestra tarea es ayudarlo.  Se tienen conjuntos de 8 palabras de cuatro letras cada una y se quiere saber si con estos se pueden formar crucigramas de 4x4. Sabiendo que las palabras se tienen que leer de izquierda a derecha y de arriba hacia abajo.

Input

La entrada consiste de 8 líneas de 4 caracteres cada una, todas las letras son mayúsculas y del alfabeto en inglés.

Output

Si no es posible poner las 8 palabras en un crucigrama de  4x4 se imprime NO, sino se imprime el crucigrama en 4 líneas. Si es posible encontrar varios crucigramas se imprime el primero en el orden lexicográfico (el orden se toma ordenando la cadena formada concatenando las palabras de las filas)

Sample test(s)

Input
RTEA AMAR ATAR TEST AAAE RRRA MEAR ASAR
Output
AMAR TEST AAAE RRRA