RT
#include<bits/stdc++.h>
using namespace std;
long long dis[1010][1010];
int n,m,q;
int u,v,w;
int x,y;
void floyd() {
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) dis[i][j]=0;
else dis[i][j]=0x3f3f3f;
for(int i=1;i<=m;i++) {
cin>>u>>v>>w;
dis[u][v]=dis[v][u]=w;
}
floyd();
cin>>q;
for(int i=1;i<=q;i++) {
cin>>x>>y;
else cout<<((dis[x][y]!=0x3f3f3f)?(dis[x][y]):(-1))<<endl;
}
}