En el curso de programación que se organiza en la Facultat de Matemàtiques i Estadística de la UPC se tiene pensado distribuir a los alumnos de forma que cada uno tenga un ordenador para el sólo. Como todos sabemos, a cada persona se le ha asignado un grupo en función de sus conocimientos de programación. Estos grupos son reciben como nombres letras del abecedario (y curiosamente, los que más saben tienen letras posteriores en el alfabeto). Todo parece perfecto, pero los ordenadores fallan, algunas clases se vuelven hornos mientras que otras parecen frigoríficos y, obviamente, luego faltan ordenadores (o sobran alumnos, según cómo se mire). Para solucionar el problema, se te pide que hagas un programa que genere todas las posibles maneras de distribuir a los alumnos.
Entrada
La entrada contendrá un número indeterminado de casos. Cada caso consta de tres números N, M, G, el número de filas de mesas, el número de ordenadores en cada fila y el número de grupos de alumnos respectivamente. En las siguientes N líneas habrá M carácteres en cada una, o bien un punto indicando que el ordenador funciona correctamente o bien una X indicando que no funciona. Los grupos son las letras mayúsculas de la A en adelante.
Salida
Para cada caso, imprimir todas las posibles distribuciones de personas de los diferentes grupos en la sala en orden lexicográfico. Dejad una línea en blanco después de cada distribución. Tras cada caso, imprimid una línea con 10 guiones. Se te garantiza que el número de distribuciones será lo suficiente pequeño para que se puedan generar y que no habrá más grupos que letras en el alfabeto (y siempre habrá al menos un grupo).
Input
2 2 2 .X X.
Output
AX XA AX XB BX XA BX XB ----------