#include<bits/stdc++.h> using namespace std; #define ll long long struct zx{ long long f,t,w; }e[120000]; ll n,m,v,u,w,p[12000],o[12000],h[120000],t,ans; int x,y; void add(int xx,int yy,int ww){ ++t; e[t].f=xx; e[t].t=yy; e[t].w=ww; } bool cmp(zx a,zx b){ return a.w>b.w; } int find(int op){ if(p[op]!=op) return find(p[op]); return op; } //void k(){ // int tot=0; // int ans=0; // for(int i=1) // //} int main(){ scanf("%lld%lld",&n,&m); for(int i=1;i<=m;i++){ scanf("%lld%lld%lld",&v,&u,&w); add(min(v,u),max(v,u),w); } sort(e+1,e+1+m,cmp); cout<<e[1].f<<" "<<e[1].t<<endl; for(int i=1;i<=n;i++){ if(find(e[i].f)==find(e[i].t)) continue; else{ p[e[i].f]=e[i].t; o[e[i].f]=e[i].w; } } scanf("%lld",&m); for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); if(find(x)!=find(y))cout<<-1<<endl; else{ while(p[x]!=x){ ans=min(ans,o[x]); x=p[x]; } while(p[y]!=y){ ans=min(ans,o[y]); y=p[y]; } cout<<ans<<endl; } } return 0; } /************************************************************** Problem: 1061 User: wuhanyu Language: C++ Result: Wrong Answer ****************************************************************/