#include <cstdio>
#include <algorithm>
#include <cstring>
#define N 10003
#define M 50003
#define INF 1<<30
using namespace std;
int A_it=0,n,m,q,x,y;
struct Src{
int fa[N];
bool valid[M];
struct edge{
int x,y,w;
bool operator <(const edge &B)const{
return w>B.w;
}
}E[M];
inline void init(){
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++)
scanf("%d%d%d",&E[i].x,&E[i].y,&E[i].w);
kruskal();
}
inline void kruskal(){
sort(E,E+m);
memset(valid,0,sizeof(valid));
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=0;i<m;i++){
int x=E[i].x,y=E[i].y;
int fx=f(x),fy=f(y);
if(fx!=fy){
fa[x]=fa[fx]=fy;
valid[i]=true;
}
}
}
int f(int x){
int fx=x;
if(fa[x]!=x){
fx=f(fa[x]);
fa[x]=fx;
}
return fx;
}
}Data;
struct Graph{
bool vis[N];
int fa[N][15],W[N][15],D[N];
struct node{
int adj,w;
node *next;
inline node(): adj(0),w(0),next(0) {}
inline void init(int &v,int &z,node *nxt){
adj=v; w=z; next=nxt;
}
}A[M],*G[N];
inline void init(){
memset(vis,0,sizeof(vis));
memset(G,0,sizeof(G));
node *p; int x,y,w;
for(int i=0;i<m;i++)
if(Data.valid[i]){
x=Data.E[i].x,y=Data.E[i].y,w=Data.E[i].w;
p=&A[A_it++]; p->init(y,w,G[x]); G[x]=p;
p=&A[A_it++]; p->init(x,w,G[y]); G[y]=p;
}
for(int u=1;u<=n;u++)
if(!vis[u])
dfs(u,0,INF,1);
for(int j=1;j<=14;j++)
for(int i=1;i<=n;i++){
fa[i][j]=fa[fa[i][j-1]][j-1];
W[i][j]=min(W[i][j-1],W[fa[i][j-1]][j-1]);
}
scanf("%d",&q);
}
void dfs(int u,int pre,int w,int d){
vis[u]=true;
fa[u][0]=pre; W[u][0]=w; D[u]=d;
for(node *p=G[u];p;p=p->next)
if(!vis[p->adj])
dfs(p->adj,u,p->w,d+1);
}
inline int LCA(int x,int y){
if(Data.f(x)!=Data.f(y))
return -1;
int ans=INF;
if(D[x]<D[y]) swap(x,y);
for(int i=14;i>=0;i--)
if(D[fa[x][i]]>=D[y])
{
ans=min(ans,W[x][i]);
x=fa[x][i];
}
if(x==y) return ans;
for(int i=14;i>=0;i--)
if(fa[x][i]!=fa[y][i])
{
ans=min(ans,W[x][i]);
ans=min(ans,W[y][i]);
x=fa[x][i],y=fa[y][i];
}
ans=min(ans,min(W[x][0],W[y][0]));
return ans;
}
}Gra;
int main()
{
Data.init();
Gra.init();
for(int i=0;i<q;i++){
scanf("%d%d",&x,&y);
printf("%d\n",Gra.LCA(x,y));
}
return 0;
}
/**************************************************************
Problem: 2326
User: admin
Language: C++
Result: Accepted
Time:609 ms
Memory:3904 kb
****************************************************************/