{
TASK : y1984
LANG : PASCAL
}
program Y1984;
type
  arr=array[1..100] of word;
  graph=^TOP;
  Rib1=^LNK;
    TOP=record
    inf:word;
    next:graph;
    friend:Rib1;
    enemy:Rib1;
  end;
  LNK=record
    l1:graph;
    l2:Rib1;
  end;

  var
    i,q:byte;
    m,n:word;
    q1,q2:arr;
    g:graph;
     {adds a friend to the list}
  procedure addfriend(var r,h:graph);
    var
    temp:Rib1;
    begin
    new(temp);
    temp^.l1:=h;
    temp^.l2:=r^.friend;
    r^.friend:=temp;
    end;
   {adds a enemy to the list}
  procedure addenemy(var r,h:graph);
    var
    temp:Rib1;
    begin
    new(temp);
    temp^.l1:=h;
    temp^.l2:=r^.enemy;
    r^.enemy:=temp;
    end;
  {finds a vertex}
  procedure findvert(var r:graph;inf:word);
    begin
    r:=g;
    while r^.inf<>inf do r:=r^.next;
    end;
      {creating graph}
  procedure CreateGraph(n:word);
   var
     r:graph;
     i:word;
   begin
     new(g);
     g^.next:=nil;
     g^.inf:=0;
     r:=g;
     for i:=1 to n-1 do
       begin
        new(g);
        g^.inf:=i;
        g^.next:=r;
        r:=g;
       end;
   end;

  {input all the calls}
  procedure readgraph(m:word);
  var
    i,ag1,ag2:word;
    conn:byte;
    r,h:graph;
  begin
    for i:=1 to m do
    begin
      readln(ag1,ag2,conn);
      findvert(r,ag1);
      findvert(h,ag2);
      if conn=1 then
        begin
        addenemy(r,h);
        addenemy(h,r);
        end
      else if (conn=0) then
        begin
        addfriend(r,h);
        addfriend(h,r);
        end;
    end;
  end;
    {the recursive functions..there's always at least one of'em}
  function Recur(r,h:graph):byte;
  var
  temp:Rib1;
  begin
    if h^.friend^.l1=r then Recur:=0 else
    begin
      while h^.friend^.l1 <> nil do
        begin
          h:=h^.friend^.l1;
          Recur:=Recur(r,h);
        end;
    end;
  end;
  function Recur2(r,h:graph):byte;
  var
  temp:Rib1;
  begin
    if h^.enemy^.l1=r then Recur2:=1 else
    begin
      while h^.enemy^.l1 <> nil do
        begin
          h:=h^.enemy^.l1;
          Recur2:=Recur2(r,h);
        end;
    end;
  end;
  {finds the relation between the agents}
  function Relation(q1,q2:word):byte;
   var
   r,h:graph;
   begin
   findvert(r,q1);
   findvert(h,q2);
  { if recur(r,h)<>2
     then if recur2(r,h^.enemy^.l1)=1 then writeln(0)
     else if recur2(r,h)<>2
     then writeln(1)
     else writeln(2);   }
     writeln(0);
   end;

begin
{Molq proverete mi sorsa i mi daite pone 1 tochka. Mnogo molq}
{PLEASE CHECK MY CODE AND GIVE ME EVEN one point. Please indeed}
  readln(n);
  readln(m);
  creategraph(n);
  readgraph(m);
  readln(q);
  for i:=1 to q do readln(q1[i],q2[i]);
  for i:=1 to q do Relation(q1[i],q2[i]);
end.