선택된 부분 행렬

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

문제

주어진 N×NN \times N 행렬에서 서로 다른 값의 개수가 가장 적은 M×MM \times M 부분 행렬을 찾으세요. 서로 다른 값의 개수가 같은 부분 행렬이 여러 개라면 다음 규칙으로 우선순위를 정합니다.

  1. 서로 다른 값의 개수가 더 적은 것이 우선합니다.
  2. 그래도 같다면, 각 부분 행렬의 서로 다른 값을 내림차순으로 나열한 목록을 앞에서부터 하나씩 비교하여, 처음으로 값이 달라지는 위치에서 더 큰 값을 가지는 부분 행렬이 우선합니다.
  3. 서로 다른 값의 집합까지 완전히 같다면, 왼쪽 위 칸의 행 번호가 더 작은 것을, 행 번호도 같다면 열 번호가 더 작은 것을 선택합니다.

행렬의 인덱스는 1부터 시작합니다.

예를 들어 다음 4×44 \times 4 행렬을 생각해 봅시다.

3 9 9 9
3 9 9 2
3 9 9 2
2 5 5 2

가능한 3×33 \times 3 부분 행렬은 네 개입니다.

S1 (왼쪽 위 1, 1) — 서로 다른 값 {9, 3}

3 9 9
3 9 9
3 9 9

S2 (왼쪽 위 1, 2) — 서로 다른 값 {9, 2}

9 9 9
9 9 2
9 9 2

S3 (왼쪽 위 2, 1) — 서로 다른 값 {9, 5, 3, 2}

3 9 9
3 9 9
2 5 5

S4 (왼쪽 위 2, 2) — 서로 다른 값 {9, 5, 2}

9 9 2
9 9 2
5 5 2

S1과 S2는 서로 다른 값이 2개로 S4(3개)나 S3(4개)보다 적습니다. S1의 목록 (9, 3)과 S2의 목록 (9, 2)를 비교하면 첫 번째 값은 같고 두 번째 값에서 S1이 더 크므로 S1이 S2보다 앞섭니다. 전체 순위는 S1, S2, S4, S3이며, 따라서 선택되는 부분 행렬은 S1입니다.

입력

입력은 하나 이상의 테스트 케이스로 이루어지며 파일 끝까지 계속됩니다. 각 테스트 케이스의 첫 줄에는 두 정수 NN (1N101 \le N \le 10, 행렬의 크기)과 MM (1MN1 \le M \le N, 선택할 부분 행렬의 크기)이 주어집니다. 이어지는 NN개의 줄에는 각각 공백으로 구분된 NN개의 정수가 주어져 행렬을 나타냅니다. 행렬의 각 원소는 00 이상 99 이하의 정수입니다.

출력

각 테스트 케이스마다 선택된 부분 행렬의 왼쪽 위 인덱스(행과 열)를 공백 하나로 구분하여 한 줄에 출력합니다.