#include<iostream>
using namespace std;
const int INF=1000000;
int n,m;
int G1[2000][2000],G2[2000][2000];
int d1[2000][2000],d2[2000][2000];

int main(){


	
	while(cin>>n>>m){
		int to,from,cost,time,num,d;
		if(n==0&&m==0)break;
	
		for(int i=0;i<m;i++){
			for(int j=0;j<m;j++){
				G1[i][j]=INF;
				G2[i][j]=INF;
				d1[i][j]=INF;
				d2[i][j]=INF;
			}
		}
	
		for(int i=0;i<n;i++){
			cin>>to>>from>>cost>>time;
			to--;from--;
			G1[to][from]=cost;
			G1[from][to]=cost;
			G2[to][from]=time;
			G2[from][to]=time;
		
			d1[to][from]=cost;
			d1[from][to]=cost;
			d2[to][from]=time;
			d2[from][to]=time;	
		}
	
	
	
		for(int i=0;i<m;i++){
			for(int j=0;j<m;j++){
				for(int k=0;k<m;k++){
					if(d1[i][j]>d1[i][k]+d1[k][j])
						d1[i][j]=d1[i][k]+d1[k][j];
					
					if(d2[i][j]>d2[i][k]+d2[k][j])
						d2[i][j]=d2[i][k]+d2[k][j];
				}
			}
		}
	

		cin>>num;
		for(int i=0;i<num;i++){
			cin>>to>>from>>d;
			to--;
			from--;
			if(d)cout<<d2[to][from]<<endl;
			else cout<<d1[from][to]<<endl;
		}
	}
	
	
	
	return 0;
}