Problema número 519

Desbloqueo retro

Tiempo máximo: 2,000-4,000 sMemoria máxima: 4096 KiB
Móvil antiguo con teclado numérico sobre un móvil más moderno de pantalla táctil mostrando el patrón de desbloqueo

Tu amigo Amadeo L. D. Zings vive en el pasado. Añora los viejos tiempos de disquettes, chirriantes módems a 56 Kbps y monitores CRT. ¡Qué tiempos aquellos en los que para ver el siguiente capítulo de una serie había que esperar una larga semana de incertidumbre!

Fiel a sus principios, sigue utilizando su viejo móvil; dice que la sensación de pulsar botones físicos es preferible a la frialdad de una pantalla, por muchos colores y aplicaciones que tenga. Pero reconoce que le gustaría que su móvil no pudiera usarlo cualquiera, y tener un patrón de desbloqueo como ha visto en alguno de esos teléfonos mucho más modernos que el suyo. Está convencido de que la pantalla del trasto al que llama teléfono podría mostrar, con letras y símbolos, la "matriz" sobre la que pintar el patrón. Luego, simularía el desplazamiento utilizando el teclado numérico a modo de flechas del cursor, con el 1 indicando que quiere desplazarse hacia arriba y a la izquierda, por ejemplo.

Como le ves un poco desesperado, has decidido buscar información sobre como se desarrollaba para esos viejos aparatos para darle una sorpresa en su próximo cumpleaños.

Entrada

Cada caso de prueba comienza con dos números, 1 ≤ FC ≤ 30 indicando, respectivamente, el número de filas y de columnas que tiene la matriz de desbloqueo que quieres pintar en la pantalla. A continuación vienen dos números, 1 ≤ f ≤ F y 1 ≤ c ≤ C, indicando la fila y la columna en la que comienza el patrón. La última línea del caso de prueba es una sucesión de dígitos indicando el desplazamiento en la matriz. Cada dígito indica una dirección de desplazamiento de acuerdo a su posición en el teclado numérico de un teléfono, de modo, por ejemplo, que los números del 1 al 3 indican un desplazamiento hacia arriba, y, además, el 1 desplaza hacia la izquierda y el 3 hacia la derecha. La secuencia de dígitos, de no más de 1.000, termina con un 5 que marca el final. Se garantiza que la posición actual se mantiene siempre dentro de los límites.

Amadeo es un pelín paranoico con la seguridad, y es posible que su patrón pase varias veces por los mismos sitios.

La entrada termina con dos ceros, que no deben procesarse.

Salida

Por cada caso de prueba, el programa escribirá el estado final del patrón.

El patrón estará encerrado en un marco de guiones y líneas verticales, con signos de suma en las esquinas. Cada posición "pulsable" está separada de las demás por un hueco (espacio o línea en blanco). Las posiciones no tocadas se pintarán con un punto (".") y las tocadas con la letra o mayúscula ("O").

Las posiciones tocadas se unirán con líneas ("-", "|", "\", "/" o "X") en función del desplazamiento realizado.

Entrada de ejemplo

3 3
1 1
687615
2 4
1 1
9392735
0 0

Salida de ejemplo

+-----+
|O-O .|
|  |  |
|O O .|
| X   |
|O-O .|
+-----+
+-------+
|O . O O|
| \ / X||
|. O O O|
+-------+