#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<math.h>
#include<cstring>
using namespace std;
int mini(int a,int b){
	if(a<b){
		return a;
	}else{
		return b;
	}
}

int cost(int p,int q,int n,int co[][101]){
	int i,s[101],a,j,d[101],b;
	for(i=0;i<=n;i++){s[i]=0;d[i]=2000;}
	a=p;s[a]=1;d[a]=0;
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			d[j]= mini(d[j],d[a]+co[a][j]);
		}
		s[a]=1;b=2000;
		for(j=1;j<=n;j++){
			if(s[j]==0&&d[j]<=b){
				a=j;b=d[j];
			}
		}
		s[a]=1;
	}
	return d[q];
}

int main(){
	while(1){
		int i,a=0,b=0,p,q,r,j,k,n,m,co[101][101],ti[101][101],s[101];
		for(i=0;i<101;i++){
			s[i]=0;
			for(j=0;j<101;j++){
				if(i==j){
					co[i][j]=0;
					ti[i][j]=0;
				}else{
					co[i][j]=2000;
					ti[i][j]=2000;
				}
			}
		}
		cin>>n>>m;
		if(n==0&&m==0)break;
		for(i=0;i<n;i++){
			cin>>a>>b;
			cin>>co[a][b]>>ti[a][b];
			co[b][a]=co[a][b];
			ti[b][a]=ti[a][b];
		}
		cin>>k;
		for(i=0;i<k;i++){
			cin>>p>>q>>r;
			if(r==0){
				cout<<cost(p,q,m,co)<<endl;
			}else{
				cout<<cost(p,q,m,ti)<<endl;
			}
		}
	}

    return 0;
}