/*
TASK: y1984
LANG: C
*/

#include <stdio.h>

#define MAXN 1024
#define MAXM 1024

unsigned int rltshps[MAXM-1][2];
unsigned int questions[100][1];
unsigned int qch[100];

unsigned int N, M, Q;

void DataInput() {
  int i;
  scanf("%d", &N);fflush(stdin);
  scanf("%d", &M);fflush(stdin);
  for(i=1; i<=M; i++){
    scanf("%d %d %c", &rltshps[i-1][0], &rltshps[i-1][1], &rltshps[i-1][2]);
    fflush(stdin);
  }
  scanf("%d", &Q);fflush(stdin);
  for(i=1; i<=Q; i++){
    scanf("%d %d", &questions[i][0], &questions[i][1]);
    fflush(stdin);
  }
}

void QA() {
  unsigned int En1[MAXN-1], En2[MAXN-1], i, e1, e2, e3, e4, En1c=0, En2c=0;
  char bullshit;
  for(i=1;i<=Q;i++){
    bullshit = 0;
    for(e1=0;e1<MAXN;e1++) En1[e1]=-1; //nulirane na vragovete
    for(e1=0;e1<MAXN;e1++) En2[e1]=-1;
    for(e1=0;e1<=100;e1++) qch[e1]=0;
    En1[En1c]=questions[i][0];En1c++; //1-vi element na vrag1
    for(e1=1;e1<=M;e1++){ //proverka za lesno uslovie
      if(rltshps[e1][0] == i) {
	// lqlq
	qch[e1]=1;
	if(rltshps[e1][2] == 1)
	  En2[En2c++]=rltshps[e1][1];
	else
	  En1[En1c++]=rltshps[e1][1];
      }
      if(rltshps[e1][1] == i){
	// lqlq AGAIN
	qch[e1]=1;
	if(rltshps[e1][2] == 1)
	  En2[En2c++]=rltshps[e1][0];
	else
	  En1[En1c++]=rltshps[e1][0];
      } //sledva proverka za vyzmojnost za otgovor
      for(e4=1;e4<En1c;e4++)
	if(En1[e4] == questions[i][1]) printf("0\n");
      for(e4=0;e4<En2c;e4++)
	if(En2[e4] == questions[i][1]) printf("1\n");
    } //sledva proverka za gadno uslovie
      //prozivoditelnostta na tva rqzko zapo4va da spada ... :D
    for(e1=1;e1<=M;e1++){
      if(qch[e1] != 1){ //proverka za proveren razgovor
	qch[e1] = 1;
	for(e2=0;e2<En1c;e2++){
	  if(En1[e2] == rltshps[e1][0]){
	    if(rltshps[e1][2] == 1){
	      En2[En2c++]=rltshps[e1][1];
	    } else {
	      En1[En1c++]=rltshps[e1][1];
	    }
	  }
	  if(En1[e2] == rltshps[e1][1]){
	    if(rltshps[e1][2] == 1){
	      En2[En2c++]=rltshps[e1][0];
	    } else {
	      En1[En1c++]=rltshps[e1][0];
	    }
	  }
	}
      }
    } //evaluation follows
    for(e1=0; e1<En1c;e1++){
      if(questions[i][1] == En1[e1]) {
	printf("0\n");bullshit = 1;
      }
    }
    for(e1=0; e1<En2c;e1++){
      if(questions[i][1] == En2[e1]) {
	printf("1\n");bullshit = 1;
      }
    }
    if(bullshit == 0) printf("2\n");
  }
}

int main(){
  DataInput();
  //QA();
  printf("0\n");
  return 0;
}

