쉽게 구별되는 삼각형
시간 제한2초메모리 제한1024 MB
모든 빈 칸에 직각삼각형을 하나씩 그릴 때, 삼각형끼리 또는 삼각형과 검은 정사각형이 변을 공유하지 않는 방법의 수를 998244353으로 나눈 나머지로 구합니다.
문제
에바는 그림 그리기를 좋아한다. 오늘 그녀는 한 변이 단위 칸 개인 정사각형 캔버스, 즉 캔버스에서 작업하고 있다. 각 칸은 흰색으로 칠해져 있거나, 검은색으로 칠해져 있거나, 아직 칠해지지 않은 빈 칸이다.
에바는 빈 칸마다 검은 삼각형을 하나씩 그리려고 한다. 각 삼각형은 직각삼각형이고 넓이는 제곱 단위 칸이다. 삼각형 하나를 그리는 방법은 다음 네 가지가 있다:

각 삼각형은 하나의 작품이며, 에바는 이 삼각형들이 나머지 그림과 쉽게 구별되기를 원한다. 이를 위해 검은 삼각형끼리는 변을 공유할 수 없고, 검은 삼각형은 검은 정사각형과도 변을 공유할 수 없다. 검은 정사각형끼리는 변을 공유해도 된다.
에바가 그림을 완성하는 방법의 수를 구하라. 수가 클 수 있으므로 으로 나눈 나머지를 출력한다.
입력
첫 줄에 캔버스의 한 변 길이 이 주어진다(). 다음 개 줄은 위에서 아래 순서로 캔버스를 나타낸다. 번째 줄은 개의 문자 로 이루어진다. 가 '.'이면 행 열 칸은 흰색이고, '#'이면 검은색, '?'이면 빈 칸이다.
출력
그림을 완성하는 방법의 수를 으로 나눈 나머지를 한 줄에 출력한다.
힌트
첫 번째 예시에서는 그림을 완성하는 방법이 가지 있으며, 아래 그림과 같다:

두 번째 예시에서는 그림을 완성하는 방법이 1가지뿐이다:

세 번째 예시에서는 중앙 칸에 어떤 삼각형을 그리든 검은 정사각형 두 개와 변을 공유하게 된다.