#include<stdio.h>
int mt[100][100]={{0}};
int mm[100][100]={{0}};
int ct[101][101];
int cm[101][101];
int Q[10000];
int main(){
  int n,m,q,r,i,j,k,l,s,g,h,c;
  int a,b,cost,time;
  while(1){
    scanf("%d %d",&n,&m);
    if(n==0&&m==0)break;
    for(i=0;i<n;i++){
      scanf("%d %d %d %d",&a,&b,&cost,&time);
      mt[--a][--b]=time;
      mt[b][a]=time;
      mm[a][b]=cost;
      mm[b][a]=cost;
    }
    for(i=0;i<m;i++){
      for(j=0;j<m;j++){
	cm[i][j]=1000000000;
	ct[i][j]=1000000000;
      }
    }
    for(s=0;s<m;s++){
      for(g=0;g<m;g++){
	//scanf("%d",&k);
	//for(i=0;i<k;i++){
	//scanf("%d %d %d",&s,&g,&h);
	Q[0]=s;
	q=0;
	r=1;
	//s--;
	//g--;
	c=0;
	int checkm[100]={0};
	for(j=0;j<m;j++){
	  if(mm[g][j]!=0)c++;
	  checkm[j]=1;
	}
	checkm[0]=0;
	cm[s][s]=0;
	ct[s][s]=0;
	//if(h==0){
	while(q!=r){
	  for(j=0;j<m;j++){//printf("%d,%d,%d\n",Q[q],j,mm[Q[q]][j]);
	    if(mm[Q[q]][j]!=0){
	      if(checkm[j]==1){
		Q[r]=j;
		//check[j]=0;
		//printf("%d %d %d %d %d\n",Q[q],j,cm[j],cm[Q[q]],mm[Q[q]][j]);
		if(cm[s][j]>cm[s][Q[q]]+mm[Q[q]][j])cm[s][j]=cm[s][Q[q]]+mm[Q[q]][j];
		r++;
	      }
	    }
	  }
	  if(Q[q]==g)c--;
	  checkm[Q[q]]=0;
	  q++;
	  if(c==0)break;
	}
	//printf("%d\n",cm[g]);
	//}
	//else{
	Q[0]=s;
	q=0;
	r=1;
	c=0;
	int checkt[100]={0};
	for(j=0;j<m;j++){
	  if(mm[g][j]!=0)c++;
	  checkt[j]=1;
	}
	checkt[0]=0;
	cm[s][s]=0;
	ct[s][s]=0;
	while(q!=r){
	  for(j=0;j<m;j++){
	    if(mt[Q[q]][j]!=0){
	      if(checkt[j]==1){
		Q[r]=j;
		//check[j]=0;
		if(ct[s][j]>ct[s][Q[q]]+mt[Q[q]][j])ct[s][j]=ct[s][Q[q]]+mt[Q[q]][j];
		r++;
	      }
	    }
	  }
	  if(Q[q]==g)c--;
	  checkt[Q[q]]=0;
	  q++;
	  if(c==0)break;
	}
	//printf("%d\n",ct[g]);
	//}
      }
    }
    scanf("%d",&k);
    for(i=0;i<k;i++){
      scanf("%d %d %d",&s,&g,&h);
      if(h==0)printf("%d\n",cm[s-1][g-1]);
      else    printf("%d\n",ct[s-1][g-1]);
    }
  }

  return 0;
}