넴모넴모 (Hard)

N 곱하기 M이 300 이하인 격자에서 꽉 찬 2 곱하기 2 정사각형을 포함하지 않는 배치의 수를 10^9+7로 나눈 나머지를 구한다.

어려움8동적 계획법비트 연산조합론행렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

네모는 낙하형 퍼즐 게임에 깊은 감명을 받아, 직사각형 격자판과 "넴모"라는 수수께끼의 생물을 쓰는 "넴모넴모"라는 게임을 만들었다. 규칙은 아주 간단하다. 격자판의 빈 칸을 아무거나 골라 넴모를 하나 올려놓거나, 넴모가 올라간 칸 네 개가 2×22 \times 2 정사각형을 이루는 곳을 찾아 그 위의 넴모를 모두 없앤다. 두 동작 중 하나를 질릴 때까지 반복하면 된다.

넴모 네 개가 2 x 2 정사각형을 이루면 한꺼번에 사라진다

안타깝게도 게임은 정말 재미가 없었고, 네모는 아주 빨리 질려 버리고 말았다. 실망한 네모는 게임을 적당히 하다가 넴모를 없애고 싶은데 격자판에 없앨 수 있는 넴모가 하나도 없으면 그만두기로 했다. 네모가 게임을 그만두었을 때 나올 수 있는 넴모 배치의 가짓수를 구하여라.

입력

첫 줄에 격자판의 행 개수 NN과 열 개수 MM이 공백으로 구분되어 주어진다. (1N,M3001 \le N, M \le 300, 1N×M3001 \le N \times M \le 300)

출력

넴모가 올라간 칸이 어느 곳에서도 2×22 \times 2 정사각형을 이루지 않는 배치의 가짓수를 109+710^9 + 7로 나눈 나머지를 첫 줄에 출력한다.

힌트

2×22 \times 2 격자판이라면 전체 24=162^4 = 16가지 배치 가운데 네 칸 모두 넴모가 올라간 한 가지만 빠지므로 답은 15가지다.

5×75 \times 7 격자판에서 조건을 만족하는 배치는 모두 11,185,495,872가지다.