{
TASK: y1984
LANG: PASCAL
}
var k,i,j,z,qt,qh,x,y,r,n,m,q:Longint;
    answer:Array[1..100]of byte;
    {queue:Array[0..1024]of longint;}
    status:Array[0..1024]of longint;
    {vis:Array[0..1024]of boolean;}
    a:Array[0..1024,0..1024]of shortint;
Begin
 For i:=0 to 1024 do
  for j:=0 to 1024 do
   a[i,j]:=-1;
  ReadLn(n,m);
 For i:=1 to m do
 Begin
   readln(x,y,r);
   a[x,y]:=r;
   a[y,x]:=r;
 End;
  ReadLn(q);
 For k:=1 to q do
 Begin
   readln(x,y);
  For i:=0 to n do
   status[i]:=2;
  For i:=0 to n do
   Begin
     if (a[x,i]=0)and(i<>x) then status[i]:=0;
     if (a[x,i]=1)and(i<>x) then status[i]:=1;
   End;
  for z:=0 to n do
  For i:=0 to n do
  Begin
   if (status[i]=0)and(i<>x) then
   Begin
    For j:=0 to n do
     if (j<>i)and(j<>x) then
     Begin
      if a[i,j]=0 then
      Begin
        a[j,x]:=0;
        a[x,j]:=0;
        status[j]:=0;
      End;
      if a[i,j]=1 then
      Begin
        a[j,x]:=1;
        a[x,j]:=1;
        status[j]:=1;
      End;
     End;
   End;
   if (status[i]=1)and(i<>x) then
   Begin
    for j:=0 to n do
     if (j<>i)and(j<>x) then
     Begin
      if a[i,j]=0 then
      Begin
        a[j,x]:=1;
        a[x,j]:=1;
        status[j]:=1;
      End;
      if a[i,j]=1 then
      Begin
        a[j,x]:=0;
        a[x,j]:=0;
        status[j]:=0;
      End;
     End;
   End;
  End;
   answer[k]:=status[y];
 End;
 For k:=1 to q do
  WriteLn(answer[k]);
End.
