만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

LaLa와 마법석

시간 제한1초메모리 제한1024 MB

요약
N x M 격자에서 장애 칸을 뺀 모든 칸을 7칸짜리 U자 조각으로 덮는 방법의 수를 998244353으로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

어느 날 \color{blue}{\text{LaLa}}는 마법 도구에 쓰는 마법석 부품이 다 떨어졌다는 것을 알았다. (이 부품은 우리 세계의 배터리와 같다.) 그래서 \color{blue}{\text{LaLa}}는 근처 가게에 달려가 마법석 판 한 장을 샀다.

\color{blue}{\text{LaLa}}는 이 판을 마법석 부품으로 잘라 쓰려고 한다. 판은 NtimesMN \\times M 칸으로 이루어져 있다. 그런데 일부 칸은 \color{blue}{\text{LaLa}}의 마법 도구와 맞지 않는다.

필요한 마법석 부품은 7칸짜리 U자 모양 조각이다.

접착제를 사지 않았기 때문에 작은 조각들을 이어 붙여 필요한 모양을 만들 수는 없다.

또한 \color{blue}{\text{LaLa}}는 마법석 낭비를 싫어한다. 그래서 호환되는 칸이 모두 필요한 모양 중 하나에 속하도록 판을 잘랐을 때만 만족한다.

\color{blue}{\text{LaLa}}가 만족하는 판의 절단 방법 수를 998,244,353998\\,244\\,353으로 나눈 나머지로 구하는 프로그램을 작성하라. 두 절단 방법이 다른 것은, 호환되는 두 칸이 한 방법에서는 같은 부품에 속하고 다른 방법에서는 서로 다른 부품에 속하는 경우가 존재할 때뿐이다.

입력

입력은 다음 형식으로 주어진다.

NN MM

S0S\\_0

S1S\\_1

vdots\\vdots

SN−1S\\_{N-1}

여기서 NN은 판의 행 수, MM은 열 수이다. SiS\\_i는 길이 MM의 이진 문자열이며, 위에서 ii번째 행, 왼쪽에서 jj번째 열의 칸이 호환되지 않는 경우에만 jj번째 문자가 '1'이다.

입력은 다음 제약을 만족한다.

  • NN과 MM은 정수이다.
  • 3leN,Mle1,0003 \\le N, M \\le 1\\,000

출력

\color{blue}{\text{LaLa}}가 만족하는 절단 방법의 수를 998,244,353998\\,244\\,353으로 나눈 나머지를 출력한다.

힌트

첫 번째 예시에서 판을 자르는 가능한 두 가지 방법은 다음과 같다.

두 번째 예시에서 판을 자르는 방법은 다음 하나뿐이다.

예제2

  1. 예제 1

    입력
    4 4
    0001
    0000
    0000
    1000
    
    예상 출력
    2
    
  2. 예제 2

    입력
    5 4
    0001
    0101
    0000
    1010
    1000
    
    예상 출력
    1