/*
TASK: y1984
LANG: C
*/
#include<stdio.h>
int queue[1024],used[1024],f[1024][1024],e[1024][1024],qm[100][2],q,cnt;
int n,m;

void init(){
int i;
scanf("%d %d",&n,&m);
for(i=0;i<m;i++){
	int t1,t2,t3;
   scanf("%d %d %d",&t1,&t2,&t3);
   if(t3==1){
   			f[t1][f[t1][0]+1]=t2;f[t1][0]++;
            f[t2][f[t2][0]+1]=t1;f[t2][0]++;
   }
   if(t3==0){
   			e[t1][e[t1][0]+1]=t2;e[t1][0]++;
            e[t2][e[t2][0]+1]=t1;e[t2][0]++;
   }

   }
   scanf("%d",&q);
   for(i=0;i<q;i++){
   	scanf("%d %d",&qm[i][0],&qm[i][1]);
   }
}

int solve(int a,int b){

if(a>b){
int c=b;
b=a;a=c;
}
int sip=0,siu=0,i;
for(i=0;i<n;i++)used[i]=0;
queue[0]=a;sip++;cnt++;
	while(siu<=sip){
		int c=queue[siu++];if(used[c]==1)continue;else used[c]=1;
		for(i=1;i<f[c][0]+1;i++)queue[sip++]=f[c][i];
     //printf("%s","solve");
   }
int fa=0,fb=0;
for(i=0;i<sip;i++){
	if(queue[i]==a)fa=1;
   if(queue[i]==b)fb=1;
   }
   
if(fa && fb)return 1;
cnt=sip;
return 0;
}

int main(){
int i,j;
init();
for(i=0;i<q;i++)printf("%d\n",solve(qm[i][0],qm[i][1]) );
return 0;
}
