#include <bits/stdc++.h>
using namespace std;
const int maxN = 1e2 + 5, MOD = 1e9 + 7, eps = 1e-7;
long long x[maxN], y[maxN];
long long n, m, k, ans, q;
int a, b, c;
vector<int> G[maxN][maxN];
bool vis[maxN];
void dfs(int u, int color) {
  vis[u] = true;
  for (int v : G[color][u]) {
    if (!vis[v]) {
      dfs(v, color);
    }
  }
}
int main() {
  cin >> n >> m;
  for (int i = int(0); i < int(m); i++) {
    cin >> a >> b >> c;
    a--, b--, c--;
    G[c][a].push_back(b);
    G[c][b].push_back(a);
  }
  cin >> q;
  for (int i = int(0); i < int(q); i++) {
    cin >> a >> b;
    a--;
    b--;
    ans = 0;
    for (int color = int(0); color < int(m); color++) {
      memset(vis, 0, sizeof vis);
      dfs(a, color);
      if (vis[b]) ans++;
    }
    cout << ans << '\n';
  }
  return 0;
}
