{
TASK: Y1984
LANG: PASCAL
}

var Vr:array[0..104,0..104] of byte;
    a,b,r,x,y:integer;
    n,m,i,j,q:integer;
    {o,used:array[1..1024] of word;}


{procedure fr(bb,ee,zz:word);
var i,now:word;
begin
     if bb<=ee
        then begin
             now:=O[bb];
             inc(bb);
             for i:=0 to n-1 do
                 if (vr[now,i]=zz) and (used[i]=0)
                    then begin
                         inc(ee);

                    end;
        end;
end;}

procedure way(xx,zz:integer);
var pom,i:integer;
begin
     if xx=y
        then writeln(zz)
        else begin
             for i:=0 to n-1 do begin
                 if (vr[xx,i]<>2)
                    then begin
                         pom:=vr[xx,i]; vr[xx,i]:=2; vr[i,xx]:=2;
                         if pom=1
                            then way(i,abs(zz-1))
                            else way(i,zz);
                         vr[xx,i]:=pom; vr[i,xx]:=pom;
                    end;
             end;

        end;
end;

begin
     readln(n);
     readln(m);
     for i:=0 to n-1 do
         for j:=0 to n-1 do Vr[i,j]:=2;

     for i:=1 to m do begin
         readln(a,b,r);
         Vr[a,b]:=r;
         Vr[b,a]:=r;
     end;
     {for i:=1 to n 1024 do begin O[i]:=0; used[i]:=0; end;
     i:=0; j:=0;
     while (A[i,j]<>1) do begin
           j:=0;
           while(A[i,j]<>1)do inc(j)
           inc(i);
     end;
     O[1]:=i;
     fr(1,1,1);
}

     readln(q);
     for i:=1 to q do begin
         readln(x,y);

         way(x,0);
     end;
end.