#include <bits/stdc++.h>
using namespace std;
const int N = 88888, K = 4, Mod = 777777777;
int n, q, M[K][K], P[N * 4][K][K];
void Set(int i, int val, int id = 1, int l = 0, int r = n) {
  for (int i = 1; i < K; i++)
    for (int j = 1; j < K; j++) P[id][i][j] = 0;
  if (r - l < 2) {
    if (val)
      P[id][val][val] = 1;
    else
      for (int i = 1; i < K; i++) P[id][i][i] = 1;
    return;
  }
  int lc = id + id, rc = lc + 1, md = l + r >> 1;
  if (i < md)
    Set(i, val, lc, l, md);
  else
    Set(i, val, rc, md, r);
  for (int i = 1; i < K; i++)
    for (int h = 1; h < K; h++) {
      long long tot = 0;
      for (int j = 1; j < K; j++)
        for (int k = 1; k < K; k++)
          if (M[j][k]) tot += 1ll * P[lc][i][j] * P[rc][k][h];
      P[id][i][h] = tot % Mod;
    }
}
int main() {
  scanf("%d%d", &n, &q);
  for (int i = 1; i < K; i++)
    for (int j = 1; j < K; j++) scanf("%d", &M[i][j]);
  for (int i = 0; i < n; i++) Set(i, 0);
  for (; q; q--) {
    int p, t;
    scanf("%d%d", &p, &t);
    Set(p - 1, t);
    long long tot = 0;
    for (int i = 1; i < K; i++)
      for (int j = 1; j < K; j++) tot += P[1][i][j];
    printf("%lld\n", tot % Mod);
  }
  return (0);
}
