Atentie

Time limit: 0.25s Memory limit: 64MB Input: Output:

Argintolac și Bronzolac concurează într-un joc pe o tablă cu NN linii și MM coloane care conține obstacole.

Jocul se desfășoară în următorul fel:

  • Dealerul Nitsoc alege un șir nevid de caractere SS ce conține doar literele U, D, L, R.
  • Argintolac alege o celulă liberă (care nu conține vreun obstacol) a tablei și plasează un robot în aceasta.
  • Bronzolac reordonează (sau nu) caracterele șirului SS.
  • Robotul parcurge traseul descris de șirul dat de Bronzolac, deplasându-se la pasul ii în celula adiacentă din direcția reprezentată de caracterul SiS_i (U - în sus, D - în jos, L - în stânga, R - în dreapta).
  • Argintolac câștigă dacă robotul ajunge teafăr în celula finală (acesta nu iese de pe tablă și nu se lovește de niciun obstacol pe parcurs), altfel, Bronzolac câștigă.

Înainte de începerea jocului, dealerul Nitsoc primește o atenție de la Argintolac și se întreabă care este numărul de șiruri SS pe care le poate alege inițial astfel încât Argintolac să câștige. Fiind foarte competitivi, atât Argintolac, cât și Bronzolac joacă optim. Din moment ce Nitsoc și-a petrecut ultimii 5 ani la Master...Club, el nu este capabil să rezolve problema singur așa că vă cere ajutorul. Să se afișeze răspunsul modulo 109+710^9 + 7.

Date de intrare

Pe primul rând se găsesc 2 numere întregi pozitive NN și MM, reprezentând numărul de linii, respectiv numărul de coloane al tablei.
Pe următoarele NN linii este descrisă configurația tablei, linia ii conținând MM caractere de tipul . (reprezentând o celulă liberă) sau # (reprezentând o celulă ce conține un obstacol).

Date de ieșire

Se va afișa pe primul rând un număr întreg reprezentând numărul de șiruri nevide SS care pot fi alese inițial astfel încât Argintolac să câștige, modulo 109+710^9 + 7.

Restricții

  • 1N,M2 0001 ≤ N, M ≤ 2\ 000
  • Tabla conține cel puțin o celulă liberă.

Subtask 1 (29 puncte)

  • N=1N = 1

Subtask 2 (8 puncte)

  • 1N,M31 ≤ N, M ≤ 3

Subtask 3 (13 puncte)

  • 1N,M101 ≤ N, M ≤ 10

Subtask 4 (9 puncte)

  • 1N,M501 ≤ N, M ≤ 50

Subtask 5 (11 puncte)

  • 1N,M1501 ≤ N, M ≤ 150

Subtask 6 (16 puncte)

  • 1N,M1 0001 ≤ N, M ≤ 1\ 000

Subtask 7 (14 puncte)

  • Fără restricții suplimentare

Exemple

stdin

2 4
##..
.##.

stdout

4

stdin

2 2
..
..

stdout

12

stdin

4 4
....
.#..
....
#...

stdout

148

Log in or sign up to be able to send submissions!