{
LANG:pascal
TASK:y1984
}
var
 a:array[0..1024,0..1024] of integer;
 m,s:array[0..1024] of integer;
 qr:array[1..1024,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[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,2]]=0) then writeln(2)
  else if m[qr[i,1]]=m[qr[i,2]] then writeln(0)
       else writeln(1);
 end;
end.