만드는 중입니다

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

조화로운 직사각형

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

요약
n×m 격자의 각 점을 빨강, 파랑, 노랑 중 하나로 칠하는 경우 중 조화로운 직사각형이 하나 이상 있는 경우의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
조합론, 동적 계획법, 행렬
정답자
아직 제출이 없습니다

문제

꼭짓점 네 개가 모두 색으로 칠해진 직사각형을 색칠된 직사각형이라고 한다. 색칠된 직사각형은 같은 색을 가진 인접한 꼭짓점 두 개가 있고, 나머지 두 꼭짓점도 서로 같은 색이면 조화롭다. 예를 들어 [1010]\begin{bmatrix} 1 & 0\\ 1 & 0 \end{bmatrix}, [0011]\begin{bmatrix} 0 & 0\\ 1 & 1 \end{bmatrix}, [1111]\begin{bmatrix} 1 & 1\\ 1 & 1 \end{bmatrix}은 조화롭고, [1001]\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}은 조화롭지 않다(같은 숫자는 같은 색, 다른 숫자는 다른 색을 뜻한다). 코토리는 {(x,y)∣1≤x≤n,1≤y≤m,x,y∈Z}\{(x,y) \mid 1 \le x \le n, 1 \le y \le m, x,y \in \mathbb{Z}\}에 속한 각 점을 빨강, 파랑, 노랑 중 하나의 색으로 칠한다. 코토리는 변이 x축 또는 y축에 평행한 조화로운 직사각형이 적어도 하나 있는 칠하는 방법의 수를 세고 싶어 한다. 즉, 다음 두 조건 중 하나가 성립하는 1≤x1<x2≤n1 \le x_1 < x_2 \le n, 1≤y1<y2≤m1 \le y_1 < y_2 \le m가 존재하는 경우를 센다. {color(x1,y1)=color(x1,y2)color(x2,y1)=color(x2,y2)\begin{cases} \text{color}(x_1, y_1) = \text{color}(x_1, y_2) \\ \text{color}(x_2, y_1) = \text{color}(x_2, y_2) \end{cases} 또는 {color(x1,y1)=color(x2,y1)color(x1,y2)=color(x2,y2)\begin{cases} \text{color}(x_1, y_1) = \text{color}(x_2, y_1) \\ \text{color}(x_1, y_2) = \text{color}(x_2, y_2) \end{cases} 두 칠하는 방법은 어떤 점의 색이 하나라도 다르면 서로 다른 방법이다. 답은 109+710^9 + 7로 나눈 나머지로 구한다.

입력

첫 줄에 테스트 케이스의 개수 TT (1≤T≤1041 \le T \le 10^4)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 정수 nn, mm (1≤n,m≤2×1031 \le n, m \le 2 \times 10^3)이 주어진다.

출력

각 테스트 케이스마다 칠하는 방법의 수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    1 4
    2 2
    3 3
    
    예상 출력
    0
    15
    16485