#include <stdio.h>

typedef struct {
	int row, col;	// posisi (row,col) dari Square M x M
	int nums[10];	// num[i] == 1 kalau ada angka i di Square ini,
					// kalau tidak maka num[i] == 0
					// dimana i adalah angka antara 0..9
} Square;

// menghitung kemunculan angka i dalam array nums
int count_distinct(int nums[10]){
	int i=0,ret=0;
	for (i=0; i<10; i++)
		if (nums[i]) ret++;
	return ret;
}

// membandingkan dua Square sesuai yang diminta soal
int better(Square *sa, Square *sb){
	int distinct_a = count_distinct(sa->nums);
	int distinct_b = count_distinct(sb->nums);
	int i;

	// pertama tama, bandingkan jumlah angka yang berbeda
	if (distinct_a != distinct_b)
		return distinct_a < distinct_b;

	// kedua, bandingkan kemunculan element tertinggi
	for (i=9; i>=0; i--)
		if (sa->nums[i] != sb->nums[i])
			return sb->nums[i] < sa->nums[i];

	// ketiga, bandingkan baris
	if (sa->row != sb->row) return sa->row < sb->row;

	// perbandingan terakhir adalah kolom
	return sa->col < sb->col;
};


int N,M,arr[10][10];

Square get_square(int r, int c){
	Square square;
	int i,j;

	square.row = r;
	square.col = c;

	for (i=0; i<10; i++)
		square.nums[i] = 0;

	for (i=0; i<M; i++)
		for (j=0; j<M; j++)
			square.nums[arr[r+i][c+j]] = 1;

	return square;
}

int main(){
	int i,j;

	while (scanf("%d %d",&N,&M)!=EOF){
		for (i=0; i<N; i++)
			for (j=0; j<N; j++)
				scanf("%d",&arr[i][j]);

		Square chosen = get_square(0,0);

		for (i=0; i+M<=N; i++)
			for (j=0; j+M<=N; j++){
				Square current = get_square(i,j);
				if (better(&current, &chosen))
					chosen = current;
			}

		// print square yang terpilih
		printf("%d %d\n",chosen.row+1, chosen.col+1);
	}
}
