#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = MOD + 1;
const long double EPS = 1e-12;
template <class T>
T &chmin(T &a, const T &b) {
  return a = min(a, b);
}
template <class T>
T &chmax(T &a, const T &b) {
  return a = max(a, b);
}
int n;
vector<vector<int> > v;
short dp[366][10][8][8][8][8];
vector<int> move(int t) {
  vector<int> res;
  if (t == 0) res = {0, 1, 2, 3, 6};
  if (t == 1) res = {0, 1, 2, 4, 7};
  if (t == 2) res = {0, 1, 2, 5, 8};
  if (t == 3) res = {3, 4, 5, 0, 6};
  if (t == 4) res = {3, 4, 5, 1, 7};
  if (t == 5) res = {3, 4, 5, 2, 8};
  if (t == 6) res = {6, 7, 8, 0, 3};
  if (t == 7) res = {6, 7, 8, 1, 4};
  if (t == 8) res = {6, 7, 8, 2, 5};
  return res;
}
vector<int> range(int t) {
  vector<int> res;
  if (t < 3)
    res = {t, t + 1, t + 4, t + 5};
  else if (t < 6)
    res = {t + 1, t + 2, t + 5, t + 6};
  else
    res = {t + 2, t + 3, t + 6, t + 7};
  return res;
}
short solve(const int day, const int pos, const int ul, const int ur,
            const int dl, const int dr) {
  if (dp[day][pos][ul][ur][dl][dr] >= 0) return dp[day][pos][ul][ur][dl][dr];
  if (ul == 7 || ur == 7 || dl == 7 || dr == 7) return 0;
  if (day == n - 1) return 1;
  short res = 0;
  vector<int> can = move(pos);
  for (int i = (int)(0); i < (int)(can.size()); i++) {
    int npos = can[i];
    vector<int> rain = range(npos);
    bool f = false;
    for (int j = (int)(0); j < (int)(rain.size()); j++)
      if (v[day + 1][rain[j]]) f = true;
    if (f) continue;
    int nul = ul + 1, nur = ur + 1, ndl = dl + 1, ndr = dr + 1;
    if (npos == 0) nul = 0;
    if (npos == 2) nur = 0;
    if (npos == 6) ndl = 0;
    if (npos == 8) ndr = 0;
    if (solve(day + 1, npos, nul, nur, ndl, ndr)) res = 1;
  }
  return dp[day][pos][ul][ur][dl][dr] = res;
}
int main() {
  while (cin >> n, n) {
    memset(dp, -1, sizeof(dp));
    v.clear();
    v.resize(n, vector<int>(16));
    for (int i = (int)(0); i < (int)(n); i++)
      for (int j = (int)(0); j < (int)(16); j++) cin >> v[i][j];
    bool f = true;
    for (int i = (int)(4); i < (int)(9); i++)
      if (v[0][i]) f = false;
    if (!f)
      puts("0");
    else
      puts(solve(0, 4, 1, 1, 1, 1) == 1 ? "1" : "0");
  }
  return 0;
}
