#include using namespace std; typedef long long ll; typedef vector vi; #define fst first #define snd second #define pb push_back const int maxn = 1e5 + 100; int L; typedef pair Pll; typedef pair Pii; int F[maxn][52]; int P[maxn * 51]; bool W[maxn][52]; const vector moves = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}}; int Find(int x) { if(P[x] == x) return x; else return P[x] = Find(P[x]); } void Union(int a, int b) { P[Find(a)] = Find(b); } set lod[60]; void polacz(int x, int y) { int f1 = F[y][x]; for(Pii m : moves) { int x2 = x + m.fst; int y2 = y + m.snd; if(W[y2][x2]) Union(f1, F[y2][x2]); } } void wyjeb(int x, int a, int b, bool kon0, bool kon1, int base) { if(lod[x].empty()) return; auto it = lod[x].upper_bound({a, -1}); if(it != lod[x].begin()) { --it; if((*it).snd >= a) { Pii p = *it; lod[x].erase(it); lod[x].insert({p.fst, a-1}); lod[x].insert({a, p.snd}); } } it = lod[x].upper_bound({b + 1, -1}); if(it != lod[x].begin()) { --it; if((*it).fst <= b && (*it).snd > b) { Pii p = *it; lod[x].erase(it); lod[x].insert({p.fst, b}); lod[x].insert({b+1, p.snd}); } } while(true) { it = lod[x].upper_bound({a,-1}); if(it == lod[x].end()) break; Pii p = *it; if(p.fst > b) break; lod[x].erase(it); int y0 = p.fst; int yk = p.snd; for(int y = y0; y <= yk; ++y) { int f1 = F[y][x]; Union(f1, base); int f2 = F[y+1][x]; W[y][x] = true; if(y != yk) Union(f1, f2); if(kon0 && W[y][x-1]) { f2 = F[y][x-1]; Union(f1, f2); } if(kon1 && W[y][x+1]) { f2 = F[y][x+1]; Union(f1, f2); } } polacz(x, y0); polacz(x, yk); } } int main() { int ind = 0; for(int i = 0; i < maxn; ++i) for(int j = 0; j < 51; ++j) { P[ind] = ind; F[i][j] = ind++; } for(int i = 0; i < 51; ++i) lod[i].insert({0, maxn}); scanf("%d", &L); for(int i = 0; i < L; ++i) { int t; int x1, x2, y1, y2; scanf("%d%d%d%d%d", &t, &x1, &y1, &x2, &y2); if(t == 0) { for(int x = x1; x <= x2; ++x) { bool kon0 = false, kon1 = false; if(x == x1) kon0 = true; if(x == x2) kon1 = true; wyjeb(x, y1, y2, kon0, kon1, F[y1][x1]); } } else { if(Find(F[y1][x1]) == Find(F[y2][x2])) { puts("1"); } else puts("0"); } } }