#include <iostream>

using namespace std;

struct Point
{
	int x;
	int y;
};

static const int N = 100;
static const int M = 50;

int W[N][N];
int P[M][M];

void rotate(int m)
{
	int A[m][m];
	for(int y=0; y<m; y++)
	{
		for(int x=0; x<m; x++)
		{
			A[y][x] =P[m-x-1][y];
		}
	}
	
	for(int y=0; y<m; y++)
	{
		for(int x=0; x<m; x++)
		{
			P[y][x] =A[y][x];
		}
	}
}

int main(int argc, char** argv)
{
	int n, m, c;
	
	while ( 1 )
	{
		cin >> n;
		cin >> m;
		if(n==0 && m==0) break;
		
		for(int j=0; j<n; j++)
		{
			for(int i=0; i<n; i++)
			{
				cin >> W[j][i];
			}
		}
	
		for(int j=0; j<m; j++)
		{
			for(int i=0; i<m; i++)
			{
				cin >> P[j][i];
			}
		}
		
		Point p;
		int flag = -1;
		bool is_ok;
		
		for(int r=0; r<4; r++)
		{
			p.x = p.y = 0;
			flag = -1;
			for(int j=0; j<n-m; j++)
			{
				for(int i=0; i<n-m; i++)
				{
					is_ok = true;
					
					for(int y=0; y<m; y++)
					{
						for(int x=0; x<m; x++)
						{
							if(W[j+y][i+x] != P[y][x] && P[y][x] != -1)
							{
								is_ok = false;
								break;
							}
							else if(flag == -1&& P[y][x] != -1)
							{
								if(p.y <= y+j && p.x <= x+i)
								{
									p.x = i+x;
									p.y = j+y;
									flag = 1;
								}
							}
						}
						if(!is_ok) break;
					}		
					if(is_ok) break;		
				}
				if(is_ok) break;
			}
			
			rotate(m);
		}
		
		if(is_ok) cout << p.x+1 << " " << p.y+1 << endl;
		else cout << "NA" << endl;
	}
}