#include <iostream>
using namespace std;

int main(){
    //n..線路の情報の数 m..駅の数
    while(true){
        int n,m;
        cin >> n >> m;

        if(n==0&&m==0){
            return 0;
        }


        int money[m][m];
        int time[m][m];

        for(int i=0;i<m;i++){
            for(int j=0;j<m;j++){
                if(i==j){
                    money[i][j] = 0;
                    time[i][j] = 0;
                }else{
                    money[i][j] = 10000;
                    time[i][j] = 10000;
                }
            }
        }

        for(int i=0;i<n;i++){
            int a,b,c,t;
            cin >> a >> b >> c >> t;
            //入力から表の作成
            money[a-1][b-1] = money[b-1][a-1] = c;
            time[a-1][b-1] = time[b-1][a-1] = t;
        }

        for(int k=0;k<m;k++){
            for(int i=0;i<m;i++){
                for(int j=0;j<m;j++){
                    money[i][j] = min(money[i][j],money[i][k]+money[k][j]);
                    time[i][j] = min(time[i][j],time[i][k]+time[k][j]);
                }
            }
        }



        //問い合わせ数
        int k;
        cin >> k;

        int p[k],q[k],r[k];

        for(int i=0;i<k;i++){
            cin >> p[i] >> q[i] >> r[i];
        }


        for(int i=0;i<k;i++){
            if(r[i]==0){
                cout << money[p[i]-1][q[i]-1] << endl;
            }else{
                cout << time[p[i]-1][q[i]-1] << endl;
            }
        }
    }
    
}
