#include #include using namespace std; bool ok[19][365]; int rain[19][366]; bool cloud(int p, int d, int n) { if(d >= n) return true; if(p < 0 || p > 18) return false; if(!ok[p][d]) return false; ++d; rain[ 0][d] = rain[ 0][d-1] + 1; rain[ 2][d] = rain[ 2][d-1] + 1; rain[16][d] = rain[16][d-1] + 1; rain[18][d] = rain[18][d-1] + 1; rain[p][d] = 0; if(rain[ 0][d] >= 7) return false; if(rain[ 2][d] >= 7) return false; if(rain[16][d] >= 7) return false; if(rain[18][d] >= 7) return false; if(cloud(p - 16, d, n)) return true; if(cloud(p - 8, d, n)) return true; if(cloud(p - 2, d, n)) return true; if(cloud(p - 1, d, n)) return true; if(cloud(p , d, n)) return true; if(cloud(p + 1, d, n)) return true; if(cloud(p + 2, d, n)) return true; if(cloud(p + 8, d, n)) return true; if(cloud(p + 16, d, n)) return true; return false; } int main(void) { ifstream cin("weather.txt"); int n; bool map[4][4]; rain[ 0][0] = 0; rain[ 2][0] = 0; rain[16][0] = 0; rain[18][0] = 0; while(cin >> n) { if(n == 0) break; for(int d = 0; d < n; d++) { for(int i = 0; i < 4; i++) for(int j = 0; j < 4; j++) { int m; cin >> m; map[i][j] = (m != 0); } for(int i = 0; i < 19; i++) ok[i][d] = false; for(int i = 0; i <= 2; i++) for(int j = 0; j <= 2; j++) if(!map[i][j] && !map[i][j+1] && !map[i+1][j] && !map[i+1][j+1]) ok[i+j*8][d] = true; } cout << (cloud(9, 0, n) ? 1 : 0) << endl; } return 0; }