Problema número 795

Carteles en papel continuo

Tiempo máximo: 1,000 sMemoria máxima: 4096 KiB
Pila de papel continuo. Por ArnoldReinhold, CC BY-SA 3.0, Wikipedia

Hace muchos, muchos años, cuando los ordenadores comenzaban a llegar a las casas, las impresoras que había en el mercado utilizaban una tecnología muy diferente a la de ahora. Se conocían como impresoras matriciales (o de matriz de puntos). Tenían muy poca versatilidad para imprimir gráficos (y ninguna versatilidad para imprimir en color) y desde el punto de vista de su programación, estaban más cerca de las antiguas máquinas de escribir que de las impresoras modernas.

Tanto es así que el tipo de letra utilizado para imprimir los textos no era responsabilidad del software del ordenador, sino que el conjunto de fuentes venía en el firmware de la impresora por lo que la apariencia final del texto dependía de dónde se imprimiera.

Lo bueno de aquellos viejos días era que había poca diferencia entre imprimir un texto en la pantalla o en la impresora. Utilizando el por aquel entonces omnipresente lenguage BASIC, la diferencia era una única L:

PRINT "Esto sale por la pantalla" LPRINT "Esto se imprime en la impresora"

Otra ventaja era la posibilidad de utilizar papel continuo que consistía en grupos de 500, 1000 o incluso más hojas plegadas y unidas en una "única hoja sin fin" de forma que no había que alimentar continuamente la impresora con folios. Eso permitía, además, imprimir carteles en largas tiras de papel que luego se podían colgar directamente en la pared sin tener que unir las páginas independientes.

Para esto último, eso sí, el programa (en BASIC o cualquier otro lenguaje) tenía que encargarse de rotar el banner que se quería imprimir para mandar las líneas a la impresora de forma que salieran en vertical en lugar de en horizontal.

Entrada

La entrada está compuesta de distintos casos de prueba representando cada uno un cartel que hay que mandar imprimir.

Cada cartel comienza con una línea con dos números indicando el número de columnas y líneas del cartel que se quiere imprimir (como mucho 40). A continuación aparece el cartel rodeado de un "marco" hecho con guiones y líneas verticales (- y |) de forma que antes de la primera línea del cartel y después de la última aparece una línea con guiones y antes y después del último caracter de cada línea aparece una línea vertical.

El cartel estará compuesto de los caracteres habituales en la época de las impresoras matriciales: además del espacio, podrá haber letras del alfabeto inglés, números, signos de puntuación, paréntesis y operadores aritméticos, como el signo de suma, resta, multiplicación o división.

Tras el último caso de prueba aparece una línea con dos ceros.

Salida

Por cada caso de prueba se escribirá el cartel rotado 90 grados en sentido contrario al seguido por las agujas del reloj. Se colocará también un marco a su alrededor siguiendo el mismo formato que en la entrada.

Entrada de ejemplo

1 1
---
|*|
---
3 2
-----
|***|
|*  |
-----
0 0

Salida de ejemplo

---
|*|
---
----
|* |
|* |
|**|
----