만드는 중입니다

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

아름다운 퍼즐 만들기

시간 제한3초메모리 제한128 MB

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

어려움10점 중 8점

유형
동적 계획법, 백트래킹, 조합론, 구현
정답자
아직 제출이 없습니다

문제

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

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

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

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

입력

첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤N≤101 \le N \le 10, 1≤M≤101 \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이 되어 최댓값을 만든다. 이렇게 놓는 방법은 한 가지뿐이다.

예제2

  1. 예제 1

    입력
    1 1
    1
    1
    1
    1
    
    예상 출력
    1 4
    
  2. 예제 2

    입력
    2 2
    2 1
    1 1
    1 2
    1 1
    1 1
    2 1
    1 1
    1 2
    
    예상 출력
    8 1