/*
TASK:y1984
LANG:C
*/


#include <stdlib.h>
#include <stdio.h>
#define MAX 1030

int n, m, q;
int A[MAX][MAX], QS[102], QS2[102];
int M[MAX], N[MAX];


int main(){

int i, j;
int y, b, c;


//read input
//FILE* f;
//f = fopen("B2.txt", "r");
scanf("%i %i", &n, &m);


for(i = 0 ; i < n ; i++){ M[i] = i; N[i]=i; }
//for(i = 0; i < n; i++) printf("%i ", M[i]);
//printf("\n");
for(i = 0 ;i < m; i++){
scanf("%i %i %i", &y, &b, &c); //if(c == 1) c =0; else c =1;A[y][b]=c;A[b][y]=c;

    if(c == 1){
        for(j = 0; j<n;j++){
            if(M[j] == M[y] && j!=y){ M[j] = -M[b];}
            if(M[j] == -M[y]){ M[j] = -M[b]; }
        }
        M[y]=-M[b];
    }
    else{
        for(j = 0; j<n;j++){
            if(M[j] == M[y] && j!=y){ M[j] = M[b];}
            if(M[j] == -M[y]){ M[j] = -M[b]; }
        }
        M[y]=M[b];
    }
}
scanf("%i", &q);
for(i = 0; i < q; i++){
    scanf("%i %i", &y, &b); QS[i]=y; QS2[i]=b;
    if((M[y]<0 && M[b]>0) || (M[y]>0 && M[b]<0)){ printf("1\n"); }
    else{
        if(M[y] == M[b]){ printf("0\n"); }
        else{ printf("2\n"); }
    }
}
//fclose(f);


//system("PAUSE");
return 0;
}
