{
LANG:pascal
TASK:y1984
}
var
 a:array[0..100,0..100] of integer;
 m,s:array[0..100] of integer;
 qr:array[1..100,1..2] of integer;
 shtv,n,x,y,i,j,q,e,r:integer;
 fl:boolean;
 function nicht(t:integer):integer;
 begin
  if t=1 then nicht:=2 else nicht:=1;
 end;
begin
 readln(n);
 readln(shtv);
 for i:=0 to n-1 do
  for j:=0 to n-1 do
   a[i,j]:=-1;
  for i:=1 to shtv do begin
  readln(x,y,r);
  a[x,y]:=r;
  a[y,x]:=r;
 end;
 readln(q);
 for i:=1 to q do
  readln(qr[i,1],qr[i,2]);
 e:=0;
 s[e]:=0;
 j:=0;
 m[s[e]]:=1;
 repeat
  fl:=false;
  if (a[s[e],j]<>-1) and ((m[s[e]]=0) or (m[j]=0))
                then begin
                 if a[m[s[e]],j]=1 then m[j]:=nicht(m[s[e]])
                                   else m[j]:=m[s[e]];
                 inc(e);
                 s[e]:=j;
                 j:=0;
                 fl:=true;
                end;
  if not fl then j:=j+1;
  if j>n then begin e:=e-1; j:=0; end;
 until e<0;
 for i:=1 to q do begin
  if (m[qr[i,1]]=0) or (m[qr[i,1]]=0) then writeln('2')
  else if m[qr[i,1]]=m[qr[i,2]] then writeln('0')
       else writeln('1');
 end;
end.