#include<vector>
#include<list>
#include<algorithm>
#include<iostream>
#include<string>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
void f(int c[][101],int t[][101],int a[],int p,int e,int n,int b,int v){
  int i;  
  if(p==e){
    if(a[p]==-1||a[p]>v)
      a[p]=v;
  }else if(a[p]==-1||a[p]>v){
    a[p]=v;
    for(i=1;i<n+1;i++){
      if(b){
	if(t[p][i]!=-1)
	  f(c,t,a,i,e,n,b,v+t[p][i]);
      }else{
	if(c[p][i]!=-1)
	  f(c,t,a,i,e,n,b,v+c[p][i]);
      }
    }
  }
  return;
}
int main(){
  int i;
  int c[101][101],t[101][101],a[101],m,n,o;
  int *s;
  for(;;){
    cin>>m>>n;
    if(m+n==0)
      break;
    memset(c,-1,sizeof(c));
    memset(t,-1,sizeof(t));
    for(i=0;i<m;i++){
      int p,q,r,s;
      cin>>p>>q>>r>>s;
      if(c[p][q]==-1||c[p][q]>r){
	c[p][q]=r;
	c[q][p]=r;
      }
      if(t[p][q]==-1||t[p][q]>s){
	t[p][q]=s;
	t[q][p]=s;
      }
    }
    cin>>o;
    s=new int[o];
    for(i=0;i<o;i++){
      int p,q,r;
      cin>>p>>q>>r;
      memset(a,-1,sizeof(a));
      f(c,t,a,p,q,n,r,0);
      s[i]=a[q];
    }
    for(i=0;i<o;i++)
      cout<<s[i]<<endl;
    delete[]s;
  }
  return 0;
}