Problema número 747

Aeropatín

Tiempo máximo: 1,000-2,000 sMemoria máxima: 4096 KiB
Fotograma de 'Regreso al futuro II' en la escena del aeropatín. Se ve un primer plano del aeropatín sobre el agua, con Marty intentando impulsarse

En la película Regreso al Futuro II el protagonista, Marty McFly, necesita huir de Griff Tannen, por lo que pide prestado a una pequeña su aeropatín, un monopatín futurista sin ruedas que levita a pocos centímetros del suelo. Pese a un cierto desconcierto inicial sobre su uso, se decide a saltar sobre él y se impulsa huyendo del violento muchacho y su banda. Tras algún que otro costalazo, consigue alejarse gracias a la ayuda de un todoterreno al que se agarra.

Por desgracia, en un determinado momento el aeropatín se descontrola y Marty se adentra levitando en el pequeño estanque de la plaza de Hill Valley. Pero el aeropatín, que no está turborizado, no puede desplazarse sobre el agua. Al final falla y Marty termina encima de una tabla inmóvil en mitad del estanque.

Entrada

Cada caso de prueba comienza con dos números 2 ≤ fc ≤ 50 indicando el número de filas y de columnas de la representación, en celdas, de la plaza de Hill Valley. A continuación aparecen f líneas con c caracteres cada una.

Cada caracter representa el contenido de una celda del mapa de la plaza. Un punto (.) representa una zona por la que el aeropatín puede desplazarse y una X representa una zona de agua. Marty está situado en la esquina superior izquierda del mapa (el primer carácter) y tiene que llegar a los juzgados situados en la esquina inferior derecha (el último carácter) para estar a salvo de Griff.

Como va en aeropatín, Marty solo puede pasar por celdas que no sean agua. Puede desplazarse de una celda a otra que esté adyacente en vertical o en horizontal (no puede desplazarse en diagonal).

Se garantiza que ni la esquina superior izquierda ni la inferior derecha son agua.

La entrada termina con dos ceros.

Salida

Por cada caso de prueba el programa escribirá SI si Marty puede llegar desde la esquina superior izquierda a la inferior derecha sin atravesar ninguna celda con agua, y NO en caso contrario.

Entrada de ejemplo

4 5
.X...
.XX..
..X..
.....
2 6
...X..
...X..
0 0

Salida de ejemplo

SI
NO