#include <iostream>
using namespace std;
#define INF 1000000
int time[110][110];
int cost[110][110];
int main()
{
    int n,m;
    while(cin>>n>>m,n){
        for(int i=0;i<m;++i){
            for(int j=0;j<m;++j){
                if(i==j){
                    time[i][j]=0;
                    cost[i][j]=0;
                }else{
                    time[i][j]=INF;
                    cost[i][j]=INF;
                }
            }
        }
        for(int i=0;i<n;++i){
            int a,b,c,t;
            cin>>a>>b>>c>>t;
            a--;b--;
            cost[a][b]=c;
            cost[b][a]=c;
            time[a][b]=t;
            time[b][a]=t;
        }
        for(int k=0;k<m;++k){
            for(int i=0;i<m;++i){
                for(int j=0;j<m;++j){
                    cost[i][j]=min(cost[i][j],cost[i][k]+cost[k][j]);
                    time[i][j]=min(time[i][j],time[i][k]+time[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)
                cout<<cost[p][q]<<endl;
            else
                cout<<time[p][q]<<endl;
        }
    }
    return 0;
}