#include using namespace std; void solve(){ using ll=long long; ll inf=1e18; ll n,r,c; cin>>n>>r>>c; vector>> g((n+1)*8); for (int i=0;i>x; for (int j=0;j<8;j++){ if (j&1) ; else g[i+j*(n+1)].push_back({i+(j+1)*(n+1),x}); } } for (int i=0;i>y; for (int j=0;j<8;j++){ g[i+j*(n+1)].push_back({i+(j|3)*(n+1),y}); } } for (int i=0;i>z; for (int j=0;j<8;j++){ if (j&4) ; else g[i+j*(n+1)].push_back({i+(j+4)*(n+1),z}); } } for (int v=0;v>s; for (int j=0;j<8;j++){ if (j&4){ g[v+j*(n+1)].push_back({n+j*(n+1),s}); g[n+j*(n+1)].push_back({v+j*(n+1),s+c}); } } } for (int i=0;i>u>>v>>w>>a>>m; u--;v--; for (int j=0;j<8;j++){ if (1){ g[u+j*(n+1)].push_back({v+j*(n+1),w}); g[v+j*(n+1)].push_back({u+j*(n+1),w}); } if (j&1){ g[u+j*(n+1)].push_back({v+j*(n+1),a}); g[v+j*(n+1)].push_back({u+j*(n+1),a}); } if (j&2){ g[u+j*(n+1)].push_back({v+j*(n+1),m}); g[v+j*(n+1)].push_back({u+j*(n+1),m}); } } } priority_queue> q; q.push({0,0}); vector dist((n+1)*8,inf); while (!q.empty()){ auto [d,v]=q.top(); q.pop(); if (dist[v]!=inf) continue; d*=-1; dist[v]=d; for (auto [u,nd]:g[v]){ q.push({-(d+nd),u}); } } ll ans=inf; for (int i=0;i<8;i++) ans=min(ans,dist[(n-1)+i*(n+1)]); cout<>t; while (t--) solve(); }