#include<iostream>
using namespace std;
const int INF = 1000000000;

int main(){
    while(true){
        int n, m;
        cin >> n >> m;
        if(n==0 && m==0)
            break;
        int c[100][100];
        int t[100][100];
        for(int i=0; i<m; i++){
            for(int j=0; j<m; j++){
                if(i==j){
                    c[i][j] = 0;
t[i][j] = 0;
                }
                else{
                    c[i][j] = INF;
t[i][j] = INF;
                }
            }
        }
        for(int i=0; i<n; i++){
            int a, b, C, T;
            cin >> a >> b >> C >> T;
            c[a-1][b-1] = C;
c[b-1][a-1] = C;
            t[a-1][b-1] = T;
t[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++){
          if(c[i][j]>c[i][k]+c[k][j]){
            c[i][j] = c[i][k]+c[k][j];
          }
          if(t[i][j]>t[i][k]+t[k][j]){
            t[i][j] = t[i][k]+t[k][j];
          }
        }
      }
    }
    int k;
    cin >> k;
    int p,q,r;
    for(int i=0;i<k;i++){
      cin >> p >> q >> r;
      if(r == 0){
        cout << c[p-1][q-1] << endl;
      }
      else{
        cout << t[p-1][q-1] << endl;
      }
    }
  }
  return 0;
}

