시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB51133.333%

문제

Robotas yra pastate, turinčiame N aukštų. Kiekviename aukšte yra po M iš eilės įrengtų kambarių, išdėstytų iš eilės taip, kad visi pastato kambariai sudarytų N × M dydžio stačiakampį. Kai kuriuose kambariuose yra po gėlę. Robotas mokysis surinkti puokštes.

Kai robotas yra kuriame nors kambaryje, jis gali elgtis taip:

  • Jei kambarys nėra pats kairiausias, jis gali pereiti į kairesnį kambarį tame pačiame aukšte.
  • Jei kambarys nėra pats dešiniausias, jis gali pereiti į dešinesnį kambarį tame pačiame aukšte.
  • Jei jis nėra apatiniame aukšte, jis gali persikelti į tiesiai po dabartiniu kambariu esantį kambarį vienu aukštu žemiau.

Robotas juda tik horizontaliai arba žemyn, bet niekada nekyla aukštyn.

Kai jis įeina į kambarį, kuriame yra gėlė, jis būtinai ją paima ir deda į puokštę.

Visos gėlės yra skirtingos, o taip pat puokštės išvaizda priklauso nuo to, kokia tvarka į ją dedamos gėlės. Dvi puokštės laikomos skirtingomis, jei jas sudaro skirtingos gėlės arba skiriasi gėlių įdėjimo į puokštę tvarka.

Robotas pradeda bet kuriame viršutinio aukšto kambaryje ir baigia bet kuriame apatinio aukšto kambaryje.

Be to, robotas visada pasirenka tokį maršrutą, kad kiekviename aukšte paimtų bent po vieną gėlę.

Nustatykite, kiek yra skirtingų variantų, kokią puokštę robotas gali būti surinkęs pabaigoje. Atsakymą išveskite moduliu 109 + 7.

입력

Pirmoje eilutėje pateikiami skaičiai N ir M.

Tolesnėse N eilučių (viena eilutė aprašo vieną aukštą, pradedant nuo viršutinio) yra po M raidžių, kurių i-oji nurodo, ar i-ajame to aukšto kambaryje iš kairės yra gėlė:

  • O – kambaryje gėlės nėra
  • X – kambaryje gėlė yra.

Garantuojama, kad kiekviename aukšte yra bent po vieną gėlę.

출력

Išveskite, kiek yra skirtingų puokščių, kurias gali surinkti robotas, moduliu 109 + 7.

제한

  • 1 ≤ N ≤ 500
  • 1 ≤ M ≤ 300

서브태스크

번호배점제한
117

1 ≤ M ≤ 3

222

N = 1

327

1 ≤ M ≤ 50

434

Papildomų ribojimų nėra.

예제 입력 1

2 1
X
X

예제 출력 1

1

Yra vienintelis variantas – abiejuose aukštuose paimti vienintelę gėlę.

예제 입력 2

2 2
XX
XO

예제 출력 2

4

Viršutiniame aukšte robotas gali paimti bet kurią vieną gėlę, arba abi bet kuria tvarka. Apatiniame aukšte jis visada paima vienintelę jame esančią gėlę.

예제 입력 3

3 3
XXX
XXO
XOO

예제 출력 3

34

채점 및 기타 정보

  • 예제는 채점하지 않는다.