#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<math.h>
using namespace std;
  
int min(int x, int y){
	if(x<y){
		return x;
	}else{
		return y;
	}
}

int co(int x,int y,int m,int c[][101]){
	int i,j,k,d[101],s[101];
	for(i=0;i<=100;i++){
		d[i]=2000;
		s[i]=0;
	}
	for(i=1;i<=m;i++){
		s[i]=1;
	}
	d[x]=0;
	for(i=1;i<=m;i++){
		k=0;
		for(j=1;j<=m;j++){
			if(s[j]==1){
				if(k==0){
					k=j;
				}else if(d[j]<d[k]){
					k=j;
				}
			}
		}
		if(k!=0){
			for(j=1;j<=m;j++){
				if(c[k][j]!=0){
					d[j]=min(d[j],d[k]+c[k][j]);
				}
			}
		}
		if(k==0){break;}
		s[k]=0;
	}
	return d[y];
}
int ti(int x,int y,int n,int t[][101]){
	int i,j,k,d[101],s[101];
	for(i=0;i<=100;i++){
		d[i]=2000;
		s[i]=0;
	}
	for(i=1;i<=n;i++){
		s[i]=1;
	}
	d[x]=0;
	for(i=1;i<=n;i++){
		k=0;
		for(j=1;j<=n;j++){
			if(s[j]==1){
				if(k==0){
					k=j;
				}else if(d[j]<d[k]){
					k=j;
				}
			}
		}
		for(j=1;j<=n;j++){
			if(t[k][j]!=0){
				d[j]=min(d[j],d[k]+t[k][j]);
			}
		}
		s[k]=0;
	}
	return d[y];
}

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