아름다운 퍼즐 만들기
시간 제한3초메모리 제한128 MB
N×M 격자의 각 칸을 네 가지 색 중 하나로 칠하되 가로세로로 인접한 칸은 다른 색이 되게 하고, 미적 합의 최댓값과 그 최댓값을 내는 배치 수를 10^9+7로 나눈 나머지를 구한다.
문제
성용이는 생일 선물로 크기의 퍼즐 판과 빨강, 파랑, 초록, 노랑 네 가지 색의 퍼즐 조각을 받았다. 각 색의 조각은 무한히 많다.
성용이는 퍼즐 판의 모든 칸에 조각을 하나씩 놓는다. 알록달록하게 꾸미고 싶기 때문에, 상하좌우로 맞닿은 두 칸에는 서로 다른 색의 조각을 놓는다.
어떤 칸에 어떤 색의 조각을 놓으면 그 칸과 색에 대해 미리 정해진 아름다움을 얻는다. 퍼즐 전체의 아름다움은 모든 칸에서 얻은 아름다움의 합이다.
퍼즐 전체의 아름다움이 가장 커지도록 조각을 놓을 때, 그 최댓값과 최댓값을 만드는 배치의 개수를 구하는 프로그램을 작성하라.
입력
첫째 줄에 과 이 공백으로 구분되어 주어진다. (, )
다음 개 줄에는 각 칸에 빨강 조각을 놓았을 때 얻는 아름다움이 한 줄에 개씩 주어진다.
이어지는 개 줄에는 파랑 조각에 대한 값이, 그다음 개 줄에는 초록 조각에 대한 값이, 마지막 개 줄에는 노랑 조각에 대한 값이 같은 형식으로 주어진다.
아름다움은 모두 이상 이하의 정수다. 퍼즐 전체의 아름다움의 최댓값은 2,100,000,000을 넘지 않는다.
출력
첫째 줄에 퍼즐 전체의 아름다움의 최댓값과, 그 최댓값을 만드는 배치의 개수를 공백으로 구분해 출력한다. 배치의 개수는 매우 커질 수 있으므로 로 나눈 나머지를 출력한다.
힌트
네 가지 색을 각각 R, B, G, Y로 적어 보자.
첫 번째 예제에서는 칸이 하나뿐이고 어떤 색을 놓아도 전체 아름다움이 1이라서 이 값이 최댓값이다. 따라서 배치는 네 가지다.
두 번째 예제에서는 윗줄에 R과 B를, 아랫줄에 G와 Y를 순서대로 놓으면 이 되어 최댓값을 만든다. 이렇게 놓는 방법은 한 가지뿐이다.