C - Parque de atracciones

Time limit: 1 s
Memory limit: 256 MiB
Languages: C, C++, Java, Python, ... (details)

Este verano Fito se va de vacaciones a un parque de atracciones muy famoso y está tan emocionado que no quiere perder ni un segundo de diversión. El parque tiene muchas atracciones y Fito después de mucho trabajo ha elegido N de ellas para visitarlas el primer día. Fito ya compró los tiques necesarios y está decidido a participar en las $N$ atracciones, una vez en cada una. Desde cualquier atracción se puede ir a otra pero Fito tiene cierta preferencia en el camino que quiere hacer. Las preferencias de Fito son pares de atracciones que quiere visitar de forma consecutiva, por ejemplo si el par es la atracción 1 y la 3 entonces él quiere visitar la atracción 1 y después la 3 o primero la 3 y después la 1. Ayuda a Fito a contar la cantidad de formas en que puede visitar las $N$ atracciones, sin repetir visitas y que se cumplan todas las preferencias de Fito.

Input

La primera línea de la entrada es un entero $N$ ($2 \leq N \leq 50$) que representa la cantidad de atracciones en el parque. Después le siguen $N$ líneas, cada una es un string de $N$ caracteres. El i-esimo carácter de la línea j es "Y" si Fito quiere visitar las atracciones i y j de forma consecutiva y "N" en caso contrario. Las líneas de la entrada forman una matriz simétrica.

Output

La salida es una línea con la cantidad de caminos que puede hacer Fito módulo $1,000,000,007$.

Sample test(s)

Input
3 NYN YNN NNN
Output
4