#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>pr;
int N,M;
int fld[100][100],sub[50][50];
vector<pr>ans;
bool check(int y,int x){
    for(int i=0;i<M;i++){
        for(int j=0;j<M;j++){
            if(sub[i][j]==-1)continue;
            if(fld[y+i][x+j]!=sub[i][j])return false;
        }
    }

    return true;
}
void solve(){
    int y,x;
    for(int i=M-1;i>=0;i--){
        for(int j=M-1;j>=0;j--){
            if(sub[i][j]!=-1){
                y=i;
                x=j;
            }
        }
    }

    for(int i=0;i+M<=N;i++){
        for(int j=0;j+M<=N;j++){
            if(!check(i,j))continue;
            ans.push_back(pr(y+i,x+j));
            return;
        }
    }
}
void change(){
    int to[50][50];
    for(int i=0;i<M;i++){
        for(int j=0;j<M;j++){
            to[i][j]=sub[j][M-i-1];
        }
    }

    for(int i=0;i<M;i++){
        for(int j=0;j<M;j++){
            sub[i][j]=to[i][j];
        }
    }
}
int main(){
    while(cin>>N>>M,N||M){
        ans.clear();
        for(int i=0;i<N;i++)
            for(int j=0;j<N;j++)
                cin>>fld[i][j];

        for(int i=0;i<M;i++)
            for(int j=0;j<M;j++)
                cin>>sub[i][j];

        for(int i=0;i<4;i++){
            solve();
            change();
        }

        sort(ans.begin(),ans.end());
        if(ans.size()==0)cout<<"NA"<<endl;
        else{
            pr p=ans[0];
            cout<<p.second+1<<" "<<p.first+1<<endl;
        }
    }
    return 0;
}