#include using namespace std; #define PB push_back #define ZERO (1e-10) #define INF int(1e9+1) #define CL(A,I) (memset(A,I,sizeof(A))) #define DEB printf("DEB!\n"); #define D(X) cout<<" "<<#X": "<B&&A-ZERO pll; typedef vector vi; typedef pair ii; typedef vector vii; #define IN(n) int n;scanf("%d",&n); #define FOR(i, m, n) for (int i(m); i < n; i++) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define FT(m, n) FOR(k, m, n) #define aa first #define bb second void ga(int N,int *A){F(N)scanf("%d",A+i);} #define AA 52 #define BB 100005 #define MX (AA*BB) int C[MX],R[MX],W; int gc(int a){return C[a]=(a==C[a]?a:gc(C[a]));} bool con(int a,int b){ if(gc(a)==gc(b))return 0; if(R[C[a]]>R[C[b]])C[C[b]]=C[a]; else R[C[b]]+=R[C[a]]==R[C[b]],C[C[a]]=C[b]; return --W,1; } #define CLR (iota(C,C+MX,0),CL(R,0),W=MX) #define MP(x,y) (x*BB+y) int Q,a,x,y,X,Y,sx[]={1,-1,0,0},sy[]={0,0,1,-1},V[AA][BB]; void cn(int x,int y,int X,int Y){if(V[x][y]&&V[X][Y])con(MP(x,y),MP(X,Y));} void tst(int x,int y){V[x][y]=1;F(4)cn(x,y,x+sx[i],y+sy[i]);} struct DSU{ int C[BB],R[BB],V[BB]; int gc(int a){return C[a]=(a==C[a]?a:gc(C[a]));} void con(int a,int b){ if(!V[a]||!V[b])return; if(gc(a)==gc(b))return; if(a>b)swap(a,b); R[C[a]]=R[C[b]],C[C[a]]=C[b]; } void fil(int u){V[u]=1,con(u,u-1),con(u,u+1);} int nxt(int u){return V[u]?R[gc(u)]+1:u;} DSU(){iota(C,C+BB,0),iota(R,R+BB,0),CL(V,0);} }Z[AA]; int G[AA][BB]; void ln(int u,int b,int e){ int x=Z[u].nxt(b); while(x<=e)tst(u,x),Z[u].fil(x),x=Z[u].nxt(x); } int main(void){ scanf("%d",&Q),CLR; F(Q){ scanf("%d%d%d%d%d",&a,&x,&y,&X,&Y); if(a){assert(x^X||y^Y);printf("%d\n",gc(MP(x,y))==gc(MP(X,Y)));continue;} if(x>X)swap(x,X); if(y>Y)swap(y,Y); FT(x,X+1)ln(k,y,Y); } return 0; }