/* Warshall-Floyd Algorithm */

#include<iostream>
#include<algorithm>

using namespace std;

int main()
{
	int cost[101][101],time[101][101];

	for(int n,m;cin>>n>>m,n;){
		for(int i=1;i<=m;i++)
			for(int j=1;j<=m;j++)
				cost[i][j]=time[i][j]=1<<29;

		for(int i=0;i<n;i++){
			int a,b,c,t;	cin>>a>>b>>c>>t;
			cost[a][b]=cost[b][a]=c;
			time[a][b]=time[b][a]=t;
		}

		for(int l=1;l<=m;l++){
			for(int i=1;i<=m;i++){
				for(int j=1;j<=m;j++){
					cost[i][j]=min(cost[i][j],cost[i][l]+cost[l][j]);
					time[i][j]=min(time[i][j],time[i][l]+time[l][j]);
				}
			}
		}

		int k;	cin>>k;
		while(k--){
			int p,q,r;	cin>>p>>q>>r;
			cout<<(r?time[p][q]:cost[p][q])<<endl;
		}
	}

	return 0;
}