아름다운 퍼즐 만들기

N×M 격자의 각 칸을 네 가지 색 중 하나로 칠하되 가로세로로 인접한 칸은 다른 색이 되게 하고, 미적 합의 최댓값과 그 최댓값을 내는 배치 수를 10^9+7로 나눈 나머지를 구한다.

어려움8동적 계획법백트래킹조합론구현아직 제출이 없습니다시간 제한3초메모리 제한128 MB

문제

성용이는 생일 선물로 N×MN \times M 크기의 퍼즐 판과 빨강, 파랑, 초록, 노랑 네 가지 색의 1×11 \times 1 퍼즐 조각을 받았다. 각 색의 조각은 무한히 많다.

성용이는 퍼즐 판의 모든 칸에 조각을 하나씩 놓는다. 알록달록하게 꾸미고 싶기 때문에, 상하좌우로 맞닿은 두 칸에는 서로 다른 색의 조각을 놓는다.

어떤 칸에 어떤 색의 조각을 놓으면 그 칸과 색에 대해 미리 정해진 아름다움을 얻는다. 퍼즐 전체의 아름다움은 모든 칸에서 얻은 아름다움의 합이다.

퍼즐 전체의 아름다움이 가장 커지도록 조각을 놓을 때, 그 최댓값과 최댓값을 만드는 배치의 개수를 구하는 프로그램을 작성하라.

입력

첫째 줄에 NNMM이 공백으로 구분되어 주어진다. (1N101 \le N \le 10, 1M101 \le M \le 10)

다음 NN개 줄에는 각 칸에 빨강 조각을 놓았을 때 얻는 아름다움이 한 줄에 MM개씩 주어진다.

이어지는 NN개 줄에는 파랑 조각에 대한 값이, 그다음 NN개 줄에는 초록 조각에 대한 값이, 마지막 NN개 줄에는 노랑 조각에 대한 값이 같은 형식으로 주어진다.

아름다움은 모두 00 이상 10910^9 이하의 정수다. 퍼즐 전체의 아름다움의 최댓값은 2,100,000,000을 넘지 않는다.

출력

첫째 줄에 퍼즐 전체의 아름다움의 최댓값과, 그 최댓값을 만드는 배치의 개수를 공백으로 구분해 출력한다. 배치의 개수는 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

힌트

네 가지 색을 각각 R, B, G, Y로 적어 보자.

첫 번째 예제에서는 칸이 하나뿐이고 어떤 색을 놓아도 전체 아름다움이 1이라서 이 값이 최댓값이다. 따라서 배치는 네 가지다.

두 번째 예제에서는 윗줄에 R과 B를, 아랫줄에 G와 Y를 순서대로 놓으면 2+2+2+2=82 + 2 + 2 + 2 = 8이 되어 최댓값을 만든다. 이렇게 놓는 방법은 한 가지뿐이다.