/*

?????????????????? ????????\?????????????¬???¨???

??? ???
???????????´??????????´\????????????????????????????????§????????????????¨??????????????????????????????????????????????????????§???
???????????????????????????????????????????????§??????????????????????????????????????????????????\??????????????????????????¨?????\???
????????????????????????????????????????????????????????°??????????¨????????????????????????????????????????????´?????????????????????§
???????????????????????????????¨??????????????????????????????°??????????????£????????????????????????

??????????????±????§??????°?????\?????¨?????????????????????????????????????????????????????????????°??????????????????????????????°
????????????????????????????????????????§???? 1 ??\??? 1000 ??\????????´??°??§??¨??????????§??????° m ??? 1 ??\??? 1000 ??\???
??§????????????????????±??????????????????????????????????§???? a b ???????§?????????? time ????????? cost ??§??¨????????? time
cost ??????????????? 1 ??\??? 1000 ??\?????¨????????????????????????????????????????§? p ?????°????§? q ???????¨???? r ??§??¨
????????? r ??? 0 ?????¨???????????????????????? 1 ?????????????°????????????????????????????????????????????????° k ??? 1 ??\???
1000 ??\?????§?????????????????????????????????????????????????????????????????¨????????????



??\ ???


?????°???????????????????????????????????\?????¨?????????????????????????????\?????????????????????????????????????????§????????????
????????????????????????????????\????????¨????????§??????
1 ?????? ??????????????±?????° n????§??????° m ?????´??° ??´??°???????§???????????????????
2 ?????? ?¬¬ 1 ?????????????????± a b cost time?????´??° ??´??° ??´??° ??´??°???????§???????????????????
3 ?????? ?¬¬ 2 ?????????????????±
???
n+1 ?????? ?¬¬ n ?????????????????±
n+2 ?????? ????????????????????° k?????´??°???
n+3 ?????? ?¬¬ 1 ?????????????????? p q r ?????´??° ??´??° ??´??°???????§???????????????????
n+4 ?????? ?¬¬ 2 ??????????????????
 ???
n+2+k ??? ?¬¬ k ??????????????????


??? ???
??\??????????????????????????¨??????????????????????????????????°????????????????????????????


*/

/*
	http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=552375#1
 */

#include <stdio.h>
 
#define MAX 1000000000
#define min(x, y) ((x) < (y) ? (x) : (y))
 
#define MAX_STATION 1001
 
int croute[MAX_STATION][MAX_STATION];
int troute[MAX_STATION][MAX_STATION];
int cost[MAX_STATION];
int check[MAX_STATION];
int n, m;
 
void dijkstra(int start, int route[MAX_STATION][MAX_STATION]) {
    int i, u;
 
    for (i = 1; i < m + 1; i++) {
    cost[i] = MAX;
    check[i] = 0;
    }
    cost[start] =0;
    while (1) {
    // ???????¢???????????????????,???????????????????°?????????¨????????¢???
    int v = -1;
    for (u = 1; u < m + 1; u++) {
        if (check[u] == 0 && (v == -1 || cost[u] < cost[v]))
        v = u;
    }
    if (v == -1)
        break;
    check[v] = 1;
 
    // v ????????±??????????????§cost?????´??°??§??????????????????
    for (u = 1; u < m + 1; u++) {
        cost[u] = min(cost[u], cost[v] + route[v][u]);
    }
    }
}
 
int main(void) {
    int i, j, k;
    int result;
 
    while (scanf("%d%d", &n, &m), n != 0) {
    for (i = 0; i < MAX_STATION; i++) {
        for (j = 0; j < MAX_STATION; j++) {
        croute[i][j] = i == j ? 0 : MAX;
        troute[i][j] = i == j ? 0 : MAX;
        }
    }
    while (n > 0) {
        int a, b, c, t;
        scanf("%d%d%d%d", &a, &b, &c, &t);
        croute[a][b] = croute[b][a] = c;
        troute[a][b] = troute[b][a] = t;
        n--;
    }
    scanf("%d", &k);
    while (k > 0) {
        int p, q, r;
        scanf("%d%d%d", &p, &q, &r);
        dijkstra(p, r == 0 ? croute : troute);
        result = cost[q];
        printf("%d\n", result);
        k--;
    }
    }
    return 0;
}

Measured memory_bytes: 8432