// 2010/12/28 Tazoe

#include <iostream>
using namespace std;

void rotate(int pct[50][50], int m)
{
	int tmp[50][50];

	for(int y=0; y<m; y++)
		for(int x=0; x<m; x++)
			tmp[y][x] = pct[y][x];

	for(int y=0; y<m; y++)
		for(int x=0; x<m; x++)
			pct[x][m-1-y] = tmp[y][x];
}

bool match(int scn[100][100], int n, int pct[50][50], int m, int xs, int ys)
{
	for(int i=0; i<4; i++){
		bool flg = true;
		for(int y=0; y<m; y++){
			for(int x=0; x<m; x++){
				if(pct[y][x]==-1)
					continue;
				if(scn[ys+y][xs+x]!=pct[y][x]){
					flg = false;
					break;
				}
			}
			if(!flg)
				break;
		}

		if(flg)
			return true;

		if(i<3)
			rotate(pct, m);
	}

	return false;
}

int main()
{
	while(true){
		int n, m;
		cin >> n >> m;
		if(n==0&&m==0)
			break;

		int scn[100][100];
		for(int y=0; y<n; y++)
			for(int x=0; x<n; x++)
				cin >> scn[y][x];

		int pct[50][50];
		for(int y=0; y<m; y++)
			for(int x=0; x<m; x++)
				cin >> pct[y][x];

		bool flg = false;
		for(int y=0; y<n-m+1; y++){
			for(int x=0; x<n-m+1; x++){
				if(match(scn, n, pct, m, x, y)){
					int dx, dy;
					bool flg2 = false;
					for(dy=0; dy<m; dy++){
						for(dx=0; dx<m; dx++){
							if(pct[dy][dx]!=-1){
								flg2 = true;
								break;
							}
						}
						if(flg2)
							break;
					}

					cout << x+1+dx << ' ' << y+1+dy << endl;
					flg = true;
					break;
				}
			}
			if(flg)
				break;
		}

		if(!flg)
			cout << "NA" << endl;
	}

	return 0;
}