#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;

const int INF = (int)1e9 + 1;

int d1[100][100], d2[100][100];

int main() {
	while (1) {
		int n, m;
		cin >> n >> m;
		if (n == 0 && m == 0) break;

		for (int i = 0; i < m; i++) {
			for (int j = 0; j < m; j++) {
				if (i == j) {
					d1[i][j] = 0;
					d2[i][j] = 0;
				}
				else {
					d1[i][j] = INF;
					d2[i][j] = INF;
				}
			}
		}
		for (int i = 0; i < n; i++) {
			int a, b, c, t;
			cin >> a >> b >> c >> t;
			a--; b--;
			d1[a][b] = d1[b][a] = c;
			d2[a][b] = d2[b][a] = t;
		}
		for (int k = 0; k < m; k++) {
			for (int i = 0; i < m; i++) {
				for (int j = 0; j < m; j++) {
					d1[i][j] = min(d1[i][j], d1[i][k] + d1[k][j]);
					d2[i][j] = min(d2[i][j], d2[i][k] + d2[k][j]);
				}
			}
		}
		int k;
		cin >> k;
		for (int i = 0; i < k; i++) {
			int p, q, r;
			cin >> p >> q >> r;
			p--; q--;
			if (r == 0) {
				cout << d1[p][q] << endl;
			}
			else {
				cout << d2[p][q] << endl;
			}
		}
	}
}
