{
TASK:y1984
LANG:pascal
}
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,c:integer;
 fl:boolean;
 {function nicht(t:integer):integer;
 begin
  if tmod 2=1 then nicht:=t+1 else nicht:=t-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]);
 c:=1;
 for i:=0 to n-1 do
 if m[i]=0 then begin
 e:=0;
 s[e]:=i;
 j:=0;
 m[s[e]]:=c;
 inc(c);
 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;
 end;
 for i:=1 to q do begin
  if m[qr[i,1]]=m[qr[i,2]] then writeln(0)
       else if m[qr[i,1]]+m[qr[i,2]]=0 then writeln(1)
            else writeln(2)
 end;
end.