#include<string>
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#define all(c) c.begin(),c.end()
#define pb push_back
using namespace std;
typedef pair<int,int> P;
int n,m;
vector<vector<int> > trans(vector<vector<int> > s){
	vector<vector<int> > t(m,vector<int>(m));
	for(int i=0;i<m;i++){
		for(int j=0;j<m;j++){
			t[i][j]=s[j][m-i-1];
		}
	}
	
	return t;
	
}
int main(){
	while(cin>>n>>m,n||m){
		vector<vector<int> > s(n,vector<int>(n)),t(m,vector<int>(m));
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++)
				cin>>s[i][j];
		}
		for(int i=0;i<m;i++){
			for(int j=0;j<m;j++)
				cin>>t[i][j];
		}
		vector<P> ans;
		for(int k=0;k<4;k++){
			for(int i=0;i<=n-m;i++){
				for(int j=0;j<=n-m;j++){
					bool flag=true;
					for(int y=0;y<m;y++){
						for(int x=0;x<m;x++){
							if(t[y][x]!=-1&&s[i+y][j+x]!=t[y][x]){
								flag=false;
								goto con;
							}
						}
					}
					if(flag){
						//cout<<"-------"<<endl;
						for(int a=0;a<m;a++){
							for(int b=0;b<m;b++){
								if(t[a][b]!=-1){
									ans.pb(P(a+i+1,b+j+1));
									//cout<<b+j+1<<" "<<a+i+1<<endl;
									goto end;
								}
							}
						}
						
						
					}
					con:;
				}
			}
			end:;
			/*cout<<endl;
			for(int i=0;i<m;i++){
				for(int j=0;j<m;j++)
				cout<<t[i][j]<<' ';
				cout<<endl;
			}*/
			t=trans(t);
		}
		if(!ans.size())
			cout<<"NA"<<endl;
		else{
			sort(all(ans));
			cout<<ans[0].second<<" "<<ans[0].first<<endl;
		}
	}
	return 0;
}