#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <numeric>
#include <bitset>
#include <cmath>

static const int MOD = 1000000007;
using ll = long long;
using u32 = unsigned;
using u64 = unsigned long long;
using namespace std;

template<class T> constexpr T INF = ::numeric_limits<T>::max()/32*15+208;

template <class T, class U>
vector<T> make_v(U size, const T& init){ return vector<T>(static_cast<size_t>(size), init); }

template<class... Ts, class U>
auto make_v(U size, Ts... rest) { return vector<decltype(make_v(rest...))>(static_cast<size_t>(size), make_v(rest...)); }

template<class T> void chmin(T &a, const T &b){ a = (a < b ? a : b); }
template<class T> void chmax(T &a, const T &b){ a = (a > b ? a : b); }

void solve(int n, int m){
    auto A = make_v(n, n, 0);
    auto B = make_v(m, m, 0);
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> A[i][j];
        }
    }
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < m; ++j) {
            cin >> B[i][j];
        }
    }
    vector<pair<int, int>> ans;
    for (int k = 0; k < 4; ++k) {
        for (int i = 0; i+m <= n; ++i) {
            for (int j = 0; j+m <= n; ++j) {
                int ok = 1;
                for (int y = 0; y < m; ++y) {
                    for (int x = 0; x < m; ++x) {
                        if(~B[y][x] && A[i+y][j+x] != B[y][x]){
                            ok = 0;
                            y = x = m;
                        }
                    }
                }
                if(ok){
                    for (int y = 0; y < m; ++y) {
                        for (int x = 0; x < m; ++x) {
                            if(~B[y][x]){
                                ans.emplace_back(y+i, x+j);
                                i = j = x = y = n;
                            }
                        }
                    }
                }
            }
        }
        auto BB = B;
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < m; ++j) {
                B[i][j] = BB[m-j-1][i];
            }
        }
    }
    if(ans.empty()){
        puts("NA");
    }else {
        sort(ans.begin(),ans.end());
        printf("%d %d\n", ans[0].second+1, ans[0].first+1);
    }
}

int main() {
    int n, m;
    while(cin >> n >> m, n){
        solve(n, m);
    }
    return 0;
}
