#include<cstdio>
#include<cstring>
#include<algorithm>
#include<functional>
#define M 1000000000
using namespace std;
void Warshall_Floyd();
void GYORETU();
int cc[1001][1001],ti[1001][1001];
int n,m,a,b,cost,time,;
int main(void)
{
	while(1) {
		scanf("%d %d",&n,&m);
		if(n==0&&m==0) break;
		GYORETU();
		Warshall_Floyd();
		int s,g,w,kk;
		scanf("%d",&kk);
		for(int i=0;i<kk;i++) {
			scanf("%d %d %d",&s,&g,&w);
			if(w==0) printf("%d\n",cc[s-1][g-1]);
			else printf("%d\n",ti[s-1][g-1]);
		}
	}
}
void GYORETU()
{
	for(int i=0;i<m;i++) {
		for(int j=0;j<m;j++) {
			cc[i][j]=M;
			ti[i][j]=M;
		}
	}
	for(int i=0;i<m;i++) {
		cc[i][i]=0;
		ti[i][i]=0;
	}
	for(int i=0;i<n;i++) {
		scanf("%d %d %d %d",&a,&b,&cost,&time);
		cc[a][b]=cost;
		cc[b][a]=cost;
		ti[a][b]=time;
		ti[b][a]=time;
	}
}
void Warshall_Floyd()
{
	for(int k=0;k<m;k++) {
		for(int i=0;i<m;i++) {
			for(int j=0;j<m;j++) {
				cc[i][j]=min(cc[i][j],cc[i][k]+cc[k][j]);
			}
		}
	}
	for(int k=0;k<m;k++) {
		for(int i=0;i<m;i++) {
			for(int j=0;j<m;j++) {
				ti[i][j]=min(ti[i][j],ti[i][k]+ti[k][j]);
			}
		}
	}
}
		
	