#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(){

	int n,m;
	int field[101][101];
	int peace[4][51][51];
	while(cin>>n>>m&&!(n==0&&m==0)){
		for(int i = 0; i < n; i++){
			for(int j = 0; j < n; j++){
				cin>>field[i][j];
			}
		}
		for(int i = 0; i < m; i++)
			for(int j = 0; j < m; j++)
				cin>>peace[0][i][j];
		// 90x¸Âñ]³¹½àÌði[
		for(int i = 1; i < 4; i++){
			for(int j = 0; j < m; j++){
				for(int k = 0; k < m; k++){
					peace[i][j][k]=peace[i-1][m-1-k][j];
				}
			}
		}
		pair<int,int> minPoint;
		minPoint.first=10000;
		minPoint.second=10000;
		for(int i = 0; i+m <= n; i++){
			for(int j = 0; j+m <= n; j++){
				for(int r = 0; r < 4; r++){
					bool f=true;
					pair<int,int> p;
					for(int k = 0; k < m; k++){
						for(int l = 0; l < m; l++){
							if(peace[r][k][l]==-1){

							}
							else if(peace[r][k][l]==field[i+k][j+l]){
								p.first=i+k;
								p.second=j+l;
							}
							else{
								//p.first=i+k;
								//p.second=j+l;
								f=false;
								break;
							}
						}
						if(!f)
							break;
					}
					if(f){
						minPoint=min(minPoint,p);
					}
				}
			}
		}
		if(minPoint.first==10000)
			cout<<"NA"<<endl;
		else
			cout<<minPoint.first<<" "<<minPoint.second<<endl;
	}

	return 0;
}