#include <iostream>
using namespace std;

const int INF = 1000000000;

int main()
{
	while(true){
		int n, m;
		cin >> n >> m;

		if(n==0 && m==0)
			break;

		int C[100][100];
		int T[100][100];
		for(int i=0; i<m; i++){
			for(int j=0; j<m; j++){
				if(i==j){
					C[i][j] = T[i][j] = 0;
				}
				else{
					C[i][j] = T[i][j] = INF;
				}
			}
		}

		for(int i=0; i<n; i++){
			int a, b, c, t;
			cin >> a >> b >> c >> t;

			C[a-1][b-1] = C[b-1][a-1] = c;
			T[a-1][b-1] = T[b-1][a-1] = t;

		}
/*
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
cout<<T[i][j]<<"     ";
}
cout <<endl;
}
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
cout<<T[i][j]<<"     ";
}
cout <<endl;
}
*/
		int minC[100][100];
		int minT[100][100];
		for(int i=0; i<m; i++){
			for(int j=0; j<m; j++){
				minC[i][j]=C[i][j];
				minT[i][j]=T[i][j];
			}
		}

		for(int k=0; k<m; k++){
			for(int i=0; i<m; i++){
				for(int j=0; j<m; j++){

					if(minC[i][j]>minC[i][k]+minC[k][j])
						minC[i][j]=minC[i][k]+minC[k][j];

					if(minT[i][j]>minT[i][k]+minT[k][j])
						minT[i][j]=minT[i][k]+minT[k][j];
				}
			}
		}
/*		
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
cout<<minC[i][j]<<"     ";
}
cout <<endl;
}
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
cout<<minT[i][j]<<"     ";
}
cout <<endl;
}
*/
		int k;
		cin >>k;	
		for(int i=0;i<k;i++){
			int p, q, r;
			cin >> p >> q >> r;
			
			if(r==0)
				cout << minC[p-1][q-1]<<endl;
			else
				cout << minT[p-1][q-1]<<endl;

		}
	}
	return 0;	
}