/* * Slow: O(Q*MV^2) */ #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 MW 55 #define MV (10005) #define MX (MV*MV) 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*MV+Y) int Q,x,y,X,Y,sx[]={1,-1,0,0},sy[]={0,0,1,-1},V[MW][MV],a; void cn(int x,int y,int X,int Y){if(min(x,X)>=0&&min(y,Y)>=0&&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]);} int main(void){ scanf("%d",&Q),CLR; F(Q){ scanf("%d%d%d%d%d",&a,&x,&y,&X,&Y); if(a)printf("%d\n",gc(MP(x,y))==gc(MP(X,Y))); else{ if(x>X)swap(x,X); if(y>Y)swap(y,Y); FT(x,X+1)FOR(i,y,Y+1)tst(k,i); } } return 0; }