#include <iostream>
#include <climits>
using namespace std;

int n, m;
int ansX, ansY;
int t[102][102], s[52][52], tmp[52][52];

void rotate(){
  for(int i = 0; i < m; i++){
    for(int j = 0; j < m; j++){
      tmp[i][j] = s[i][j];
    }
  }

  for(int i = 0; i < m; i++){
    for(int j = 0; j < m; j++){
      s[j][m - i - 1] = tmp[i][j];
    }
  }
}

void update(int sx, int sy){
  for(int i = 0; i < m; i++){
    for(int j = 0; j < m; j++){
      if(s[i][j] != -1){
        int x = sx + j;
        int y = sy + i;

        if(y < ansY || y == ansY && x < ansX){
          ansX = x;
          ansY = y;
          return;
        }
      }
    }
  }
}

bool check(int sx, int sy){
  for(int i = sy; i < sy + m; i++){
    for(int j = sx; j < sx + m; j++){
      if(s[i - sy][j - sx] == -1) continue;
      if(s[i - sy][j - sx] != t[i][j]){
        return false;
      }
    }
  }

  return true;
}

void solve(){
  for(int sx = 0; sx <= n - m; sx++){
    for(int sy = 0; sy <= n - m; sy++){
      for(int i = 0; i < 4; i++){
        if(check(sx, sy)){
          update(sx, sy);
        }
        rotate();
      }
    }
  }

  if(ansX == INT_MAX){
    cout << "NA\n";
  }
  else{
    cout << ansX + 1 << " " << ansY + 1 << endl;
  }
}

void show(){
  for(int i = 0; i < m; i++){
    for(int j =0; j < m; j++){
      printf("%3d", s[i][j]);
    }
    cout<<endl;
  }
  cout<<"--\n";
}

int main(){
  while(cin >> n >> m, n || m){
    ansX = INT_MAX;
    ansY = INT_MAX;

    for(int i = 0; i < n; i++){
      for(int j = 0; j < n; j++){
        cin >> t[i][j];
      }
    }

    for(int i = 0; i < m; i++){
      for(int j = 0; j < m; j++){
        cin >> s[i][j];
      }
    }

    solve();
  }
}