//56
#include<iostream>
#include<algorithm>

using namespace std;

#define INF (1<<29)

int main(){
  for(int n,m;cin>>n>>m,n|m;){
    int cm[101][101];
    int tm[101][101];
    fill_n(cm[0],101*101,INF);
    fill_n(tm[0],101*101,INF);
    for(int i=1;i<=100;i++){
      cm[i][i]=tm[i][i]=0;
    }
    for(int i=0;i<n;i++){
      int a,b,c,t;
      cin>>a>>b>>c>>t;
      tm[a][b]=tm[b][a]=t;
      cm[a][b]=cm[b][a]=c;
    }
    for(int k=1;k<=100;k++){
      for(int j=1;j<=100;j++){
	for(int i=1;i<=100;i++){
	  tm[i][j]=min(tm[i][j],tm[i][k]+tm[k][j]);
	  cm[i][j]=min(cm[i][j],cm[i][k]+cm[k][j]);
	}
      }
    }
    int k;
    cin>>k;
    while(k--){
      int p,q,r;
      cin>>p>>q>>r;
      cout<<((r)?tm:cm)[p][q]<<endl;
    }
  }
  return 0;
}