직사각형 색칠

N x M 격자에서 색칠된 각 칸의 변으로 인접한 색칠 칸 수가 짝수인 색칠 경우의 수를 센다.

보통7동적 계획법비트 연산구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

단위 정사각형으로 나누어진 N×MN \times M 크기의 직사각형이 있다. 다음 두 조건을 만족하도록 칸을 색칠하는 방법의 수를 구하는 프로그램을 작성하시오.

  • 모든 칸은 색칠되어 있거나 비어 있다.
  • 색칠된 칸마다 변을 맞대고 있는 칸 중에서 색칠된 칸의 개수가 짝수여야 한다.

빈 칸에는 아무 조건도 붙지 않는다. 한 칸도 색칠하지 않는 것도 한 가지 방법으로 센다.

아래 그림은 N=4N = 4, M=7M = 7인 경우의 예이다. 노란색은 색칠한 칸, 검은색은 빈 칸이다.

NNMM이 주어지면 색칠하는 방법의 수를 구한다.

입력

첫째 줄에 NNMM이 주어진다. (1N1001 \le N \le 100, 1M81 \le M \le 8)

출력

첫째 줄에 색칠하는 방법의 수를 1,000,000,007로 나눈 나머지를 출력한다.

힌트

N=2N = 2, M=2M = 2인 경우에는 아래 8가지 방법이 가능하다.