원통 게임의 즐거움

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

원통 게임은 아직 어디에도 공개되지 않은 새 게임이다. 이 게임을 만든 사람은 공개하기 전에 최적의 진행을 찾아 주는 프로그램을 먼저 갖추고 싶어 한다.

게임판은 원통이다. 원통은 위에서부터 11번부터 NN번까지 번호가 붙은 NN개의 행으로 나뉘고, 각 행은 다시 11번부터 MM번까지 번호가 붙은 MM개의 칸으로 나뉜다. 칸마다 수가 하나 적혀 있다. 게임판이 원통이므로 같은 행의 11번 칸과 MM번 칸은 서로 붙어 있다.

칸은 두 수 XXYY로 나타낸다. XX는 행 번호이고 YY는 그 행에서의 칸 번호다. 두 칸 (X1,Y1)(X_1, Y_1)(X2,Y2)(X_2, Y_2) 사이의 거리는 다음과 같다.

X1X2+min(Y1Y2,MY1Y2)|X_1 - X_2| + \min(|Y_1 - Y_2|, M - |Y_1 - Y_2|)

게임은 첫 번째 행에서 아무 칸이나 하나 골라 시작한다. 그다음부터는 현재 칸에서 다음 행의 칸으로 옮겨 가는데, 두 칸 사이의 거리가 KK를 넘지 않아야 한다. 마지막 행에 닿을 때까지 이 이동을 반복한다. 점수는 고른 칸에 적힌 수를 모두 더한 값이고, 이 점수를 최대로 만들어야 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 개수 TT가 주어진다(1T1001 \le T \le 100). 그 뒤로 TT개의 테스트 케이스가 이어진다.

각 테스트 케이스는 N+1N + 1개의 줄로 주어진다. 첫째 줄에는 행의 개수 NN, 한 행의 칸 개수 MM, 한 번의 이동에서 허용되는 최대 거리 KK가 정수로 주어진다(1N,M,K10001 \le N, M, K \le 1000).

이어지는 NN개의 줄에는 각각 MM개의 수가 주어진다. ii번째 줄의 jj번째 수는 칸 (i,j)(i, j)에 적힌 수다. 주어지는 모든 수의 절댓값은 10001000 이하다.

출력

각 테스트 케이스마다 한 줄을 출력한다. 먼저 얻을 수 있는 최대 점수를 출력하고, 공백 하나를 둔 다음 NN개의 수를 공백 하나씩으로 구분해 출력한다. ii번째 수는 ii번째 행에서 고른 칸의 번호다.

최대 점수를 얻는 방법이 여러 가지면 사전순으로 가장 앞서는 것을 출력한다. 두 답 XXYY가 처음으로 달라지는 자리에서 XX의 수가 더 작으면 XXYY보다 사전순으로 앞선다.

참고

연속한 두 행의 행 번호 차이는 항상 11이므로, ii번째 행의 yy번 칸에서 i+1i + 1번째 행의 yy'번 칸으로 가는 이동은 min(yy,Myy)K1\min(|y - y'|, M - |y - y'|) \le K - 1일 때만 허용된다. 따라서 K=1K = 1이면 칸 번호를 끝까지 바꿀 수 없다.

모든 행에서 정확히 한 칸씩 고르므로 출력하는 칸 번호는 항상 NN개다.