#include <bits/stdc++.h>
#define pii pair<int, int>
#define mp make_pair
#define INF 1000000007
using namespace std;
int dp[101][10001];
struct node{
int dist, cost, src;
node(int d, int c, int s) : dist(d), cost(c), src(s){}
};
vector<node> adj[101];
int n, k, dist_0[101];
void build(){
for(int j = 0; j < 101; j++)
adj[j].clear(), dist_0[j] = INF;
vector< pair<pii, int> > zero;
int m;
scanf("%d %d %d",&k ,&n ,&m);
while(m--){
int u, v, cost, dist;
scanf("%d %d %d %d" ,&u ,&v ,&dist ,&cost);
adj[v].push_back(node(dist, cost, u));
if(cost == 0) zero.push_back(mp(mp(u, v), dist));
}
dist_0[1] = 0;
// BELLMEN FORD
for(int j = 0; j < n-1; j++){
for(int i = 0; i < zero.size(); i++){
int u = zero[i].first.first, v = zero[i].first.second, dist = zero[i].second;
if(dist_0[u] + dist < dist_0[v]) dist_0[v] = dist_0[u] + dist;
}
}
}
int solve(){
for(int j = 0; j < 101; j++)
for(int i = 0; i < 10001; i++)
if(j != 1) dp[j][i] = INF;
else dp[j][i] = 0;
for(int j = 1; j <= n; j++)
dp[j][0] = dist_0[j];
for(int j = 1; j <= k; j++){
for(int i = 2; i <= n; i++){
for(int l = 0; l < adj[i].size(); l++){
node curr = adj[i][l];
//dp[i][j] = min(dp[i][j], dp[i][j - 1]);
if(j - curr.cost >= 0) dp[i][j] = min(dp[i][j], dp[curr.src][j - curr.cost] + curr.dist);
}
}
}
int ans = INF;
for(int j = 0; j <= k; j++)
ans = min(ans, dp[n][j]);
if(ans == INF) return -1;
return ans;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
build();
//cout << "builder completes!\n";
printf("%d\n",solve());
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGlpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgSU5GIDEwMDAwMDAwMDcKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZHBbMTAxXVsxMDAwMV07CgpzdHJ1Y3Qgbm9kZXsKCWludCBkaXN0LCBjb3N0LCBzcmM7CgoJbm9kZShpbnQgZCwgaW50IGMsIGludCBzKSA6IGRpc3QoZCksIGNvc3QoYyksIHNyYyhzKXt9Cn07Cgp2ZWN0b3I8bm9kZT4gYWRqWzEwMV07CgppbnQgbiwgaywgZGlzdF8wWzEwMV07Cgp2b2lkIGJ1aWxkKCl7Cglmb3IoaW50IGogPSAwOyBqIDwgMTAxOyBqKyspCgkJYWRqW2pdLmNsZWFyKCksIGRpc3RfMFtqXSA9IElORjsKCgl2ZWN0b3I8IHBhaXI8cGlpLCBpbnQ+ID4gemVybzsKCWludCBtOwoJc2NhbmYoIiVkICVkICVkIiwmayAsJm4gLCZtKTsKCXdoaWxlKG0tLSl7CgkJaW50IHUsIHYsIGNvc3QsIGRpc3Q7CgkJc2NhbmYoIiVkICVkICVkICVkIiAsJnUgLCZ2ICwmZGlzdCAsJmNvc3QpOwoJCWFkalt2XS5wdXNoX2JhY2sobm9kZShkaXN0LCBjb3N0LCB1KSk7CgkJaWYoY29zdCA9PSAwKSB6ZXJvLnB1c2hfYmFjayhtcChtcCh1LCB2KSwgZGlzdCkpOwoJfQoKICAgIGRpc3RfMFsxXSA9IDA7CgkvLyBCRUxMTUVOIEZPUkQKCWZvcihpbnQgaiA9IDA7IGogPCBuLTE7IGorKyl7CgkJZm9yKGludCBpID0gMDsgaSA8IHplcm8uc2l6ZSgpOyBpKyspewoJCQlpbnQgdSA9IHplcm9baV0uZmlyc3QuZmlyc3QsIHYgPSB6ZXJvW2ldLmZpcnN0LnNlY29uZCwgZGlzdCA9IHplcm9baV0uc2Vjb25kOwoJCQlpZihkaXN0XzBbdV0gKyBkaXN0IDwgZGlzdF8wW3ZdKSBkaXN0XzBbdl0gPSBkaXN0XzBbdV0gKyBkaXN0OwoJCX0KCX0KfQoKaW50IHNvbHZlKCl7Cglmb3IoaW50IGogPSAwOyBqIDwgMTAxOyBqKyspCgkJZm9yKGludCBpID0gMDsgaSA8IDEwMDAxOyBpKyspCgkJCWlmKGogIT0gMSkgZHBbal1baV0gPSBJTkY7CgkJCWVsc2UgZHBbal1baV0gPSAwOwoKCWZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKQoJCWRwW2pdWzBdID0gZGlzdF8wW2pdOwoKCWZvcihpbnQgaiA9IDE7IGogPD0gazsgaisrKXsKCQlmb3IoaW50IGkgPSAyOyBpIDw9IG47IGkrKyl7CgkJCWZvcihpbnQgbCA9IDA7IGwgPCBhZGpbaV0uc2l6ZSgpOyBsKyspewoJCQkJbm9kZSBjdXJyID0gYWRqW2ldW2xdOwoJCQkJLy9kcFtpXVtqXSA9IG1pbihkcFtpXVtqXSwgZHBbaV1baiAtIDFdKTsKCQkJCWlmKGogLSBjdXJyLmNvc3QgPj0gMCkgZHBbaV1bal0gPSBtaW4oZHBbaV1bal0sIGRwW2N1cnIuc3JjXVtqIC0gY3Vyci5jb3N0XSArIGN1cnIuZGlzdCk7CgkJCX0KCQl9Cgl9CgoJaW50IGFucyA9IElORjsKCWZvcihpbnQgaiA9IDA7IGogPD0gazsgaisrKQoJCWFucyA9IG1pbihhbnMsIGRwW25dW2pdKTsKCWlmKGFucyA9PSBJTkYpIHJldHVybiAtMTsKCXJldHVybiBhbnM7Cn0KCmludCBtYWluKCl7CglpbnQgdDsKCXNjYW5mKCIlZCIsJnQpOwoJd2hpbGUodC0tKXsKCQlidWlsZCgpOwoJCS8vY291dCA8PCAiYnVpbGRlciBjb21wbGV0ZXMhXG4iOwoJCXByaW50ZigiJWRcbiIsc29sdmUoKSk7Cgl9CglyZXR1cm4gMDsKfQo=