#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
#define INF (1<<20)
typedef pair<int,int> P;
int fie[111][111];
int mie[111][111];
int cie[4][111][111];
int n,m;
void solves(){
  int x=0,y=0;
  for(int i=y;i<y+m;i++){
    for(int j=x;j<x+m;j++){
      int nx=j-x;
      int ny=i-y;
      cie[0][j][i]=mie[nx][ny];
    }
  }

  for(int i=y;i<y+m;i++){
    for(int j=x;j<x+m;j++){
      int nx=i-y;
      int ny=m-(j-x)-1;
      cie[1][j][i]=mie[nx][ny];
    }
  }

  for(int i=y;i<y+m;i++){
    for(int j=x;j<x+m;j++){
      int nx=m-(i-y)-1;
      int ny=j-x;
      cie[2][j][i]=mie[nx][ny];
    }
  }
  for(int i=y;i<y+m;i++){
    for(int j=x;j<x+m;j++){
      int nx=m-(j-x)-1;
      int ny=m-(i-y)-1;
      cie[3][j][i]=mie[nx][ny];
    }
  }
}
P solve(int x,int y){
  P res=P(INF,INF);
  for(int l=0;l<4;l++){
    P tmp=P(INF,INF);
    for(int i=0;i<m;i++){
      for(int j=0;j<m;j++){
	int nx=j+x;
	int ny=i+y;
	if(cie[l][j][i]==-1) continue;
	if(fie[nx][ny]!=cie[l][j][i]){
	  tmp = P(INF,INF);
	  break;
	}else{
	  tmp=min(tmp,P(ny,nx));
	}
      }
      if(tmp.first==INF) break;
    }
    //    printf(" %d %d\n",tmp.second,res.first);
    res = min(res,tmp);
  }
  return res;
}
main(){
  while(1){
    scanf("%d %d",&n,&m);
    if(!n && !m) break;
    for(int i=0;i<n;i++)
      for(int j=0;j<n;j++)
	scanf("%d",&fie[j][i]);
    for(int i=0;i<m;i++)
      for(int j=0;j<m;j++)
	scanf("%d",&mie[j][i]);
    solves();
    /*    for(int l=0;l<4;l++){
      for(int i=0;i<m;i++){
	for(int j=0;j<m;j++)
	  printf(" %2d",cie[l][j][i]);
	puts("");
      }
      puts("");
      }*/

    P res=P(INF,INF);
    for(int i=0;i+m<=n;i++){
      for(int j=0;j+m<=n;j++){
	P t=solve(j,i);
	//       	printf("%d %d P:%d %d\n",j,i,t.second+1,t.first+1);
	res = min(t,res);
      }
    }
    if(res.first==INF) puts("NA");
    else printf("%d %d\n",res.second+1,res.first+1);
    
  }
}