원통 게임은 아직 어디에도 공개되지 않은 새 게임이다. 이 게임을 만든 사람은 공개하기 전에 최적의 진행을 찾아 주는 프로그램을 먼저 갖추고 싶어 한다.
게임판은 원통이다. 원통은 위에서부터 1번부터 N번까지 번호가 붙은 N개의 행으로 나뉘고, 각 행은 다시 1번부터 M번까지 번호가 붙은 M개의 칸으로 나뉜다. 칸마다 수가 하나 적혀 있다. 게임판이 원통이므로 같은 행의 1번 칸과 M번 칸은 서로 붙어 있다.
칸은 두 수 X와 Y로 나타낸다. X는 행 번호이고 Y는 그 행에서의 칸 번호다. 두 칸 (X1,Y1)과 (X2,Y2) 사이의 거리는 다음과 같다.
∣X1−X2∣+min(∣Y1−Y2∣,M−∣Y1−Y2∣)
게임은 첫 번째 행에서 아무 칸이나 하나 골라 시작한다. 그다음부터는 현재 칸에서 다음 행의 칸으로 옮겨 가는데, 두 칸 사이의 거리가 K를 넘지 않아야 한다. 마지막 행에 닿을 때까지 이 이동을 반복한다. 점수는 고른 칸에 적힌 수를 모두 더한 값이고, 이 점수를 최대로 만들어야 한다.
입력은 여러 개의 테스트 케이스로 이루어진다. 첫째 줄에 테스트 케이스의 개수 T가 주어진다(1≤T≤100). 그 뒤로 T개의 테스트 케이스가 이어진다.
각 테스트 케이스는 N+1개의 줄로 주어진다. 첫째 줄에는 행의 개수 N, 한 행의 칸 개수 M, 한 번의 이동에서 허용되는 최대 거리 K가 정수로 주어진다(1≤N,M,K≤1000).
이어지는 N개의 줄에는 각각 M개의 수가 주어진다. i번째 줄의 j번째 수는 칸 (i,j)에 적힌 수다. 주어지는 모든 수의 절댓값은 1000 이하다.
각 테스트 케이스마다 한 줄을 출력한다. 먼저 얻을 수 있는 최대 점수를 출력하고, 공백 하나를 둔 다음 N개의 수를 공백 하나씩으로 구분해 출력한다. i번째 수는 i번째 행에서 고른 칸의 번호다.
최대 점수를 얻는 방법이 여러 가지면 사전순으로 가장 앞서는 것을 출력한다. 두 답 X와 Y가 처음으로 달라지는 자리에서 X의 수가 더 작으면 X가 Y보다 사전순으로 앞선다.
연속한 두 행의 행 번호 차이는 항상 1이므로, i번째 행의 y번 칸에서 i+1번째 행의 y′번 칸으로 가는 이동은 min(∣y−y′∣,M−∣y−y′∣)≤K−1일 때만 허용된다. 따라서 K=1이면 칸 번호를 끝까지 바꿀 수 없다.
모든 행에서 정확히 한 칸씩 고르므로 출력하는 칸 번호는 항상 N개다.