#include #define endl '\n' using namespace std; typedef long long ll; ll i,j,p,n,m,k,t,p1,ans; struct Put { ll v,d; }; bool operator<(Put a,Put b) { return a.d>b.d; } bool b[100006]; priority_queue q; vector v[100006],g[100006]; ll r[100006]; void read() { freopen("hurry.in","r",stdin); freopen("hurry.out","w",stdout); } void solve() { cin>>n>>m; for(i=1;i<=n;i++) { v[i].clear(); g[i].clear(); r[i]=LLONG_MAX; } for(i=1; i<=m; i++) { cin>>p>>j>>k>>p1; v[p].push_back({j,k}); v[j].push_back({p,k}); g[p].push_back({j,p1}); g[j].push_back({p,p1}); } q.push({n,0}); fill(b+1,b+n+1,0); ans=LLONG_MAX; while(!q.empty()) { auto i=q.top(); q.pop(); if(!b[i.v]) { // cout<>t; while(t--) { solve(); } return 0; }