/**
* author: orzvanh14 ( Độc cô cầu đặc )
* created: 18.04.2026 03:56:02
* too lazy to update time
**/
// i wants to take ioi
//binhtinhtutinkhongcaycunhungmotkhikhongcontutinnualatuyetvong
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn "\n"
#define pi pair<int, int>
#define ti tuple<int, int, int>
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define eb emplace_back
#define pb push_back
#define TASK " "
#define ms(a, x) memset(a, x, sizeof(a))
#define all(a) a.begin(), a.end()
#define All(a, n) a + 1, a + 1 + n
#define LOG 19
const int INF = 1e18;
const int N = 1e3 + 5;
const int maxn = 100 + 5;
const int mod = 1e9 + 7;
struct node{
int kc, u, st;
bool operator<(const node& other) const {
return kc > other.kc;
}
};
struct edge{
int v, w, h;
};
int t, n, m;
int a[N];
// vector<int> d(N, INF);
void nhap(){
cin >> t;
}
vector<pi> adj[N];
void dijkstra(int s){
vector<vector<int>> d(N, vector<int>(N, INF));
priority_queue<node> q;
d[s][1] = 0;
q.push({d[s][1], s, 1});
while(!q.empty()){
node Top = q.top(); q.pop();
int kc = Top.kc;
int u = Top.u;
int st = Top.st;
if(kc > d[u][st]) continue;
for(auto [v, w] : adj[u]){
// tiếp tục dùng loại xe trước đó
if(d[v][st] > d[u][st] + w * a[st]){
d[v][st] = d[u][st] + a[st] * w;
q.push({d[v][st], v, st});
}
// mua xe mới
if(d[v][v] > d[u][st] + w * a[st]){
d[v][v] = d[u][st] + a[st] * w;
q.push({d[v][v], v, v});
}
}
}
int ans = INF;
for(int i = 1; i <= n; i++){
ans = min(ans, d[n][i]);
}
cout << ans << nn;
}
void solve(){
while(t--){
cin >> n >> m;
for(int i = 1; i <= m; i++){
int x, y, w;
cin >> x >> y >> w;
adj[x].eb(y, w);
adj[y].eb(x, w);
}
for(int i = 1; i <= n; i++){
cin >> a[i];
}
dijkstra(1);
for(int i = 1; i <= n; i++) adj[i].clear();
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
nhap();
solve();
return 0;
}
LyoqCiAqICAgIGF1dGhvcjogIG9yenZhbmgxNCAoIMSQ4buZYyBjw7QgY+G6p3UgxJHhurdjICkKICogICAgY3JlYXRlZDogMTguMDQuMjAyNiAwMzo1NjowMgogKiAgICB0b28gbGF6eSB0byB1cGRhdGUgdGltZQoqKi8KLy8gaSB3YW50cyB0byB0YWtlIGlvaQovL2Jpbmh0aW5odHV0aW5raG9uZ2NheWN1bmh1bmdtb3RraGlraG9uZ2NvbnR1dGlubnVhbGF0dXlldHZvbmcKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbm4gIlxuIgojZGVmaW5lIHBpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgdGkgdHVwbGU8aW50LCBpbnQsIGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBUQVNLICIgIgoKI2RlZmluZSBtcyhhLCB4KSBtZW1zZXQoYSwgeCwgc2l6ZW9mKGEpKQojZGVmaW5lIGFsbChhKSBhLmJlZ2luKCksIGEuZW5kKCkKI2RlZmluZSBBbGwoYSwgbikgYSArIDEsIGEgKyAxICsgbgoKI2RlZmluZSBMT0cgMTkKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgTiA9IDFlMyArIDU7CmNvbnN0IGludCBtYXhuID0gMTAwICsgNTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CgoKc3RydWN0IG5vZGV7CglpbnQga2MsIHUsIHN0OwoJYm9vbCBvcGVyYXRvcjwoY29uc3Qgbm9kZSYgb3RoZXIpIGNvbnN0IHsKICAgICAgICByZXR1cm4ga2MgPiBvdGhlci5rYzsgCiAgICB9Cn07CnN0cnVjdCBlZGdlewoJaW50IHYsIHcsIGg7Cn07CmludCB0LCBuLCBtOwppbnQgYVtOXTsKLy8gdmVjdG9yPGludD4gZChOLCBJTkYpOwp2b2lkIG5oYXAoKXsKICAgIGNpbiA+PiB0OwoKfQp2ZWN0b3I8cGk+IGFkaltOXTsKdm9pZCBkaWprc3RyYShpbnQgcyl7Cgl2ZWN0b3I8dmVjdG9yPGludD4+IGQoTiwgdmVjdG9yPGludD4oTiwgSU5GKSk7Cglwcmlvcml0eV9xdWV1ZTxub2RlPiBxOwogICAgZFtzXVsxXSA9IDA7CiAgICBxLnB1c2goe2Rbc11bMV0sIHMsIDF9KTsKICAgIHdoaWxlKCFxLmVtcHR5KCkpewogICAgICAgIG5vZGUgVG9wID0gcS50b3AoKTsgcS5wb3AoKTsKICAgICAgICBpbnQga2MgPSBUb3Aua2M7CiAgICAgICAgaW50IHUgPSBUb3AudTsKICAgICAgICBpbnQgc3QgPSBUb3Auc3Q7CiAgICAgICAgaWYoa2MgPiBkW3VdW3N0XSkgY29udGludWU7CgkJZm9yKGF1dG8gW3YsIHddIDogYWRqW3VdKXsKCQkJLy8gdGnhur9wIHThu6VjIGTDuW5nIGxv4bqhaSB4ZSB0csaw4bubYyDEkcOzCgkJCWlmKGRbdl1bc3RdID4gZFt1XVtzdF0gKyB3ICogYVtzdF0pewoJCQkJZFt2XVtzdF0gPSBkW3VdW3N0XSArIGFbc3RdICogdzsKCQkJCXEucHVzaCh7ZFt2XVtzdF0sIHYsIHN0fSk7CgkJCX0KCQkJLy8gbXVhIHhlIG3hu5tpCgkJCWlmKGRbdl1bdl0gPiBkW3VdW3N0XSArIHcgKiBhW3N0XSl7CgkJCQlkW3ZdW3ZdID0gZFt1XVtzdF0gKyBhW3N0XSAqIHc7CgkJCQlxLnB1c2goe2Rbdl1bdl0sIHYsIHZ9KTsKCQkJfQoJCQkKCQl9CgogICAgfQogICAgaW50IGFucyA9IElORjsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKCQlhbnMgPSBtaW4oYW5zLCBkW25dW2ldKTsKCX0JCQoJY291dCA8PCBhbnMgPDwgbm47CQp9CnZvaWQgc29sdmUoKXsKCXdoaWxlKHQtLSl7CgkJY2luID4+IG4gPj4gbTsKCQlmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKyl7CgkJCWludCB4LCB5LCB3OwoJCQljaW4gPj4geCA+PiB5ID4+IHc7CgkJCWFkalt4XS5lYih5LCB3KTsKCQkJYWRqW3ldLmViKHgsIHcpOwoJCX0KCQlmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CgkJCWNpbiA+PiBhW2ldOwoJCX0KCQlkaWprc3RyYSgxKTsKCQlmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgYWRqW2ldLmNsZWFyKCk7Cgl9Cn0Kc2lnbmVkIG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoJbmhhcCgpOwoJc29sdmUoKTsKCXJldHVybiAwOwp9Cg==