#include<iostream>

int n,m,p[50][50],w[100][100];
int x,y,tx,ty;

bool match(int xx, int yy){
	for(int i=0; i<m; i++)
		for(int k=0; k<m; k++)
			if(p[i][k] != w[i+yy][k+xx] && p[i][k] != -1)
				return false;
	for(int i=0; i<m; i++){
		for(int k=0; k<m; k++){
			if(p[i][k] != -1){
				tx = k+xx,ty = i+yy;
				return true;
			}
		}
	}
}

bool match90(int xx, int yy){
	for(int i=0; i<m; i++)
		for(int k=0; k<m; k++)
			if(p[i][k] != w[(m-k-1)+yy][i+xx] && p[i][k] != -1)
				return false;
	for(int k=m-1; k>=0; k--){
		for(int i=0; i<m; i++){
			if(p[i][k] != -1){
				tx = i+xx,ty = m-k+yy-1;
				return true;
			}
		}
	}
}

bool match180(int xx, int yy){
	for(int i=0; i<m; i++)
		for(int k=0; k<m; k++)
			if(p[i][k] != w[(m-i-1)+yy][(m-k-1)+xx] && p[i][k] != -1)
				return false;
	for(int k=m-1; k>=0; k--){
		for(int i=m-1; i>=0; i--){
			if(p[i][k] != -1){
				tx = m-i+xx-1,ty = m-k+yy-1;
				return true;
			}
		}
	}
}

bool match270(int xx, int yy){
	for(int i=0; i<m; i++)
		for(int k=0; k<m; k++)
			if(p[i][k] != w[k+yy][(m-i-1)+xx] && p[i][k] != -1)
				return false;
	for(int k=0; k<m; k++){
		for(int i=m-1; i>=0; i--){
			if(p[i][k] != -1){
				tx = m-i+xx-1,ty = k+yy;
				return true;
			}
		}
	}
}

void solve(){
	x = 1000;
	y = 1000;
	for(int i=0; i<=n-m; i++){
		for(int k=0; k<=n-m; k++){
			if(i>y+m)
				return;
			if(match(k,i))
				if(ty < y || (ty == y && tx < x))
					x = tx,y = ty;
 			if(match90(k,i))
				if(ty < y || (ty == y && tx < x))
					x = tx,y = ty;
			if(match180(k,i))
				if(ty < y || (ty == y && tx < x))
					x = tx,y = ty;
			if(match270(k,i))
				if(ty < y || (ty == y && tx < x))
					x = tx,y = ty;
		}
	}
}

int main(){
	while(true){
		std::cin >> n >> m;
		if(!n && !m)
			return 0;
		for(int i=0; i<n; i++)
			for(int k=0; k<n; k++)
				std::cin >> w[i][k];
		for(int i=0; i<m; i++)
			for(int k=0; k<m; k++)
				std::cin >> p[i][k];
		solve();
		if(x == 1000 && y == 1000)
			std::cout << "NA\n";
		else
			std::cout << x+1 << ' ' << y+1 << std::endl;
	}
}