#include <iostream>
using namespace std;

int main(void){
    while(true){
        int n, m;
        cin >> n >> m;
        if(n+m==0) break;
        int INF=1<<29;
        int cost[110][110], t[110][110];
        
        for(int i=1; i<=m; i++){
            for(int j=1; j<=m; j++){
                if(i==j){
                    cost[i][j]=0;
                    t[i][j]=0;
                }else{
                    cost[i][j]=INF;
                    t[i][j]=INF;
                }
            }
        }
        for(int i=0; i<n; i++){
            int a, b;
            cin >> a >> b;
            cin >> cost[a][b] >> t[a][b];
            cost[b][a]=cost[a][b];
            t[b][a]=t[a][b];
        }
        for(int k=1; k<=m; k++){
            for(int i=1; i<=m; i++){
                for(int j=1; j<=m; j++){
                    cost[i][j]=min(cost[i][j], cost[i][k]+cost[k][j]);
                    t[i][j]=min(t[i][j], t[i][k]+t[k][j]);
                }
            }
        }
        int k;
        cin >> k;
        while(k--){
            int p, q, r;
            cin >> p >> q >> r;
            cout << (r==0? cost[p][q]:t[p][q]) << "\n";
            
        }
    
    
    }
}

