C - Palabras prohibidas III

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

El tabú es un juego en el que un jugador debe describir un concepto sin usar ninguna palabra de una lista. Si el equipo es capaz de adivinar el concepto ganan un punto. Si el jugador no puede describir el concepto o menciona una de las palabras de la lista entonces pierden el punto.

Fito está implementando un juego con una dinámica similar. Al inicio se crea una lista con $N$ palabras que se consideran tabú. Después se debe crear un texto que no contenga ninguna palabra de la lista. Para comprobar las ocurrencias se eliminan del texto los espacios y los signos de puntuación. Con este paso hacemos el juego un poco más difícil porque no permitimos que el fin de una palabra y el comienzo de la que le sigue en el texto formen una de las palabras prohibidas.

Por último Fito decide hacer un juego más general. Ahora se permite que aparezcan las palabras prohibidas pero con una condición. La suma de todas las ocurrencias de las palabras prohibidas en el texto debe ser igual a $K$. Con esta implementación el juego clásico se obtiene con $K = 0$. De todos los posibles textos Fito quiere el menor en orden lexicográfico, aunque es posible que no tenga ningún significado.

Input

La primera línea de la entrada contiene tres enteros $N (1 \leq N \leq 10)$, $L (1 \leq L \leq 100)$ y $K (1 \leq K \leq 15)$ que indican respectivamente la cantidad de palabras prohibidas, la longitud del texto buscado y la cantidad total de ocurrencias de las palabras tabú. Le siguen las $N$ palabras en líneas separadas $(1 \leq |P_i | \leq 10)$. Las palabras y el texto que se debe formar están compuestos por letras minúsculas del alfabeto latino.

Output

Se debe imprimir el menor texto en orden lexicográfico que tiene $L$ letras y con cantidad total de ocurrencias igual a $K$. Si dicho texto no existe se debe imprimir “Imposible”.

Sample test(s)

Input
2 4 3 aa ab
Output
aaaa