
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int inf=0x3f3f3f;
const int maxn=200;
int n,m;
int dis[maxn][maxn];
ll len;
ll budget;
void floyd()
{
for(int k=1; k<=n; k++)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(dis[i][k]!=inf&&dis[k][j]!=inf&&dis[i][k]+dis[k][j]<dis[i][j])
{
dis[i][j]=dis[i][k]+dis[k][j];
}
}
}
}
}
bool check(ll x)
{
ll cnt=1;
ll sum=0;
for(int i=1; i<=len; i++)
{
cnt=cnt*x;
sum+=cnt;
if(sum>budget)
{
return 0;
}
}
if(sum<=budget)
{
return 1;
}
else return 0;
}
int main()
{
ios::sync_with_stdio(false);
memset(dis,inf,sizeof(dis));
cin>>n>>m;
for(int i=1; i<=n; i++)
{
dis[i][i]=0;
}
for(int i=0; i<m; i++)
{
int u,v;
cin>>u>>v;
dis[u][v]=1;
dis[v][u]=1;
}
floyd();
int q;
cin>>q;
while(q--)
{
int s,t,b;
cin>>s>>t>>budget;
len=dis[s][t];
ll l=0;
ll r=budget;
while(l<r)
{
ll mid=r-(r-l)/2;
if(check(mid))
{
l=mid;
}
else r=mid-1;
}
cout<<l<<endl;
}
}