#include <bits/stdc++.h>
using namespace std;
long long k;
int a, b;
int A[3][3];
int B[3][3];
long long x, y;
bool mrk[3][3];
vector<pair<int, int> > stk;
void dfs(int K, int X, int Y) {
  if (K > k) return;
  mrk[X][Y] = true;
  if (X != Y) {
    if (!Y && X == 2)
      ++y;
    else if (!X && Y == 2)
      ++x;
    else if (X > Y)
      ++x;
    else if (Y > X)
      ++y;
  }
  stk.push_back({X, Y});
  int nx = A[X][Y];
  int ny = B[X][Y];
  if (!mrk[nx][ny])
    dfs(K + 1, nx, ny);
  else {
    pair<int, int> P = {nx, ny};
    int len = 0;
    long long cntA = 0;
    long long cntB = 0;
    vector<pair<int, int> > vec;
    while (!stk.empty()) {
      pair<int, int> p = stk.back();
      stk.pop_back();
      ++len;
      if (p.first != p.second) {
        if (!p.first && p.second == 2)
          ++cntA;
        else if (!p.second && p.first == 2)
          ++cntB;
        else if (p.first > p.second)
          ++cntA;
        else if (p.second > p.first)
          ++cntB;
      }
      vec.push_back(p);
      if (p == P) break;
    }
    long long R = k - K;
    x += (R / len) * cntA;
    y += (R / len) * cntB;
    R = (k - K) % len;
    reverse(vec.begin(), vec.end());
    for (int i = 0; i < R; ++i) {
      pair<int, int> p = vec[i];
      if (p.first != p.second) {
        if (!p.first && p.second == 2)
          ++x;
        else if (!p.second && p.first == 2)
          ++y;
        else if (p.first > p.second)
          ++x;
        else if (p.second > p.first)
          ++y;
      }
    }
  }
}
void solve() {
  --a, --b;
  dfs(1, a, b);
}
int main() {
  scanf("%lld %d %d", &k, &a, &b);
  for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j) {
      scanf("%d", &A[i][j]);
      --A[i][j];
    }
  for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j) {
      scanf("%d", &B[i][j]);
      --B[i][j];
    }
  solve();
  printf("%lld %lld\n", x, y);
  return 0;
}
