#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(void){

	int n, m, a, b, cost1, time1, k, p, q, r;
	int d_cost[101][101], d_time[101][101];

	while (cin >> n >> m && n != 0 && m != 0){

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

				d_cost[i][j] = 1001;
				d_time[i][j] = 1001;
			}
		}

		for (int i = 0; i < n; i++){

			cin >> a >> b >> cost1 >> time1;
			d_cost[a][b] = cost1;
			d_cost[b][a] = cost1;
			d_time[a][b] = time1;
			d_time[b][a] = time1;
		}

		/*cout << endl;
		for (int i = 1; i < m; i++){
			for (int j = 1; j < m; j++){

				printf("%5d", d_cost[i][j]);
			}
			cout << endl;
		}
		cout << endl;
		for (int i = 1; i < m; i++){
			for (int j = 1; j < m; j++){

				printf("%5d", d_time[i][j]);
			}
			cout << endl;
		}*/

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

					d_cost[j][k] = min(d_cost[j][k], d_cost[j][i] + d_cost[i][k]);
					d_time[j][k] = min(d_time[j][k], d_time[j][i] + d_time[i][k]);
				}
			}
		}

		cin >> k;

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

			cin >> p >> q >> r;

			if (r == 0)
				cout << d_cost[p][q] << endl;
			else
				cout << d_time[p][q] << endl;
		}
	}
}