#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const long long oo=1e18;
const int mod=1e9+7;
const int base=31;
const int B=320;
int Test=1;
void home()
{
if(fopen("main.inp","r"))
freopen("main.inp","r",stdin),
freopen("main.out","w",stdout);
}
bool bit(int mask,int i){return (mask>>i)&1;}
int n,m,q;
vector<pair<int,int>>e[100005];
map<pair<int,int>,int>mp;
pair<int,int>Q[100005];
vector<int>roll;
int bo[100005],sz[100005],ans[100005];
int Tim(int a)
{
if(a==bo[a])return a;
return bo[a]=Tim(bo[a]);
}
vector<int>comp[100005];
void Hop(int u,int v,int type)
{
u=Tim(u),v=Tim(v);
if(u==v)return;
roll.push_back(u);
roll.push_back(v);
if(sz[u]<sz[v])swap(u,v);
if(type)
{
for(int uu:comp[u])
{
for(int vv:comp[v])
{
if(uu<vv)mp[{uu,vv}]++;
else mp[{vv,uu}]++;
}
}
for(int vv:comp[v])comp[u].push_back(vv);
comp[v].clear();
}
bo[v]=u;sz[u]+=sz[v];
}
void Tcmduc_VOI27()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v,c;cin>>u>>v>>c;
e[c].push_back({u,v});
}
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>Q[i].fi>>Q[i].se;
if(Q[i].fi>Q[i].se)swap(Q[i].fi,Q[i].se);
}
for(int i=1;i<=n;i++)bo[i]=i,sz[i]=1,comp[i].push_back(i);
for(int c=1;c<=m;c++)
{
for(auto [u,v]:e[c])
{
if(e[c].size()>B)Hop(u,v,0);
else Hop(u,v,1);
}
if(e[c].size()>B)
{
for(int i=1;i<=q;i++)
if(Tim(Q[i].fi)==Tim(Q[i].se))ans[i]++;
}
for(int u:roll)
{
bo[u]=u,sz[u]=1,comp[u].clear();
comp[u].push_back(u);
}
roll.clear();
}
for(int i=1;i<=q;i++)cout<<ans[i]+mp[{Q[i].fi,Q[i].se}]<<'\n';
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);home();
while(Test--)Tcmduc_VOI27();
return 0;
}