조화로운 행렬
시간 제한5초메모리 제한768 MB
서로 다른 정수로 이루어진 2xN 또는 3xN 행렬에서, 각 행의 순위 순서가 모두 같은 최대 열 부분행렬을 찾아 그 열의 개수를 구한다.
문제
서로 다른 양의 정수로만 이루어진 2×N 또는 3×N 행렬(이차원 배열)을 생각하자. 행렬 Q가 주어졌을 때, 1개 이상의 열을 선택해 순서대로 붙여 만든 행렬을 Q의 열-부분행렬이라 한다. (Q도 자기 자신의 열-부분행렬이다.)
예를 들어 행렬 Q가 다음과 같다고 하자.

다음 행렬 X는 Q에서 2열, 3열, 5열, 6열, 8열을 선택해 만든 열-부분행렬이다.

행렬 X의 등수행렬 RX를 다음과 같이 정의하자. 행렬 RX의 i행 j열 원소 RX[i, j]는 행렬 X의 i행 j열 원소 X[i, j]가 X의 i번째 행에서 몇 등(가장 큰 수가 1등)인지를 나타낸다. X의 등수행렬 RX는 다음과 같다. (원본 행렬 Q의 원소는 모두 다르므로 RX의 각 행에서 같은 등수는 존재하지 않는다.)

X[1,1]에 저장된 74는 X의 1행 원소 74, 41, 89, 52, 63 중에서 두 번째로 크므로 RX[1, 1]에 2가 저장된다. 다른 원소의 값도 같은 방식으로 계산한다.
어떤 열-부분행렬의 등수행렬에서 모든 행이 일치하면, 그 열-부분행렬을 조화로운 행렬이라고 한다. RX의 경우 1행과 3행은 일치하지만 2행은 다른 행과 일치하지 않으므로 조화로운 행렬이 아니다.
다음은 행렬 Q에서 2열, 3열, 6열, 8열을 선택해 만든 열-부분행렬 Y와 그 등수행렬 RY이다.

등수행렬 RY의 모든 행이 일치하므로 열-부분행렬 Y는 조화로운 행렬이다. 행렬 Q의 조화로운 열-부분행렬 중 가장 큰 행렬의 크기는 3×4이다.
2×N 또는 3×N 행렬 Q가 주어졌을 때, Q의 조화로운 열-부분행렬 중 가장 큰 행렬의 열 개수를 구하는 프로그램을 작성하시오.
입력
표준 입력으로 행의 개수 M과 열의 개수 N이 첫 줄에 입력된다. 다음 M개의 줄에 각 행의 정보가 한 줄에 하나씩 입력된다. 한 줄에는 한 행의 원소를 나타내는 N개의 양의 정수가 열 순서대로 공백을 사이에 두고 주어진다.
출력
조화로운 열-부분행렬 중 가장 큰 행렬의 열 개수를 나타내는 정수를 표준 출력으로 출력한다.
제한
모든 서브태스크에서 행렬의 원소는 1 이상 109 이하이다.