//#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;
#define file "o"
#define ff(i, a, b) for(auto i=(a); i<=(b); ++i)
#define ffr(i, b, a) for(auto i=(b); i>=(a); --i)
#define nl "\n"
#define ss " "
//#define pb push_back
#define pb emplace_back
#define fi first
#define se second
#define sz(s) (int)s.size()
#define all(s) (s).begin(), (s).end()
#define ms(a,x) memset(a, x, sizeof (a))
#define cn continue
#define re exit(0)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
const int mod=1e9+7;
const int maxn=2e5+15;
const ll inf=4e18;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll ran(ll l, ll r)
{
return uniform_int_distribution<ll> (l, r)(rng);
}
inline void rf(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
if(fopen(file".inp","r")){
freopen(file".inp","r",stdin); freopen(file".out","w",stdout);
}
}
template<typename T> inline void add(T &x, const T &y)
{
x+=y;
if(x>=mod) x-=mod;
if(x<0) x+=mod;
}
template<typename T> inline bool maxi(T &a, T b)
{
if(a>=b) return 0;
a=b; return 1;
}
template<typename T> inline bool mini(T &a, T b)
{
if(a<=b) return 0;
a=b; return 1;
}
int n, m;
int par[maxn], sz[maxn];
struct edge{int u, v; ll p, w;} e[300005];
vector<pair<int, ll>> g[maxn];
ll d[maxn];
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> q;
inline bool cmp(edge x, edge y)
{
return x.p<y.p;
}
inline int fp(int u)
{
if(u==par[u]) return par[u];
return par[u]=fp(par[u]);
}
inline bool unite(int u, int v)
{
u=fp(u); v=fp(v);
if(u==v) return 0;
if(sz[u]>sz[v]) swap(u, v);
sz[v]+=sz[u]; par[u]=v;
return 1;
}
inline bool lt(int u, int v)
{
return fp(u)==fp(v);
}
void djk()
{
ff(i, 1, n) d[i]=inf;
d[1]=0; q.push({0, 1});
while(!q.empty())
{
pair<ll, int> tmp=q.top(); q.pop();
ll du=tmp.fi; int u=tmp.se;
if(du!=d[u]) cn;
for(auto x:g[u])
{
int v=x.fi; ll w=x.se;
if(mini(d[v], du+w)) q.push({d[v], v});
}
}
}
signed main()
{
rf();
cin>>n>>m;
ff(i, 1, n) par[i]=i, sz[i]=1;
ff(i, 1, m)
{
int u, v; ll p, w; cin>>u>>v>>p>>w;
e[i]={u, v, p, w};
}
sort(e+1, e+m+1, cmp);
ff(i, 1, m)
{
int u=e[i].u, v=e[i].v; ll w=e[i].w;
unite(u, v);
g[u].pb(v, w); g[v].pb(u, w);
if(lt(1, n))
{
cout<<e[i].p<<ss;
int j=i+1;
while(j<=m && e[j].p==e[i].p)
{
u=e[j].u; v=e[j].v; w=e[j].w;
g[u].pb(v, w); g[v].pb(u, w);
++j;
}
break;
}
}
djk(); cout<<d[n];
re;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsdHVuZT1uYXRpdmUiKQojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZmlsZSAibyIKI2RlZmluZSBmZihpLCBhLCBiKSBmb3IoYXV0byBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgZmZyKGksIGIsIGEpIGZvcihhdXRvIGk9KGIpOyBpPj0oYSk7IC0taSkKI2RlZmluZSBubCAiXG4iCiNkZWZpbmUgc3MgIiAiCi8vI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHN6KHMpIChpbnQpcy5zaXplKCkKI2RlZmluZSBhbGwocykgKHMpLmJlZ2luKCksIChzKS5lbmQoKQojZGVmaW5lIG1zKGEseCkgbWVtc2V0KGEsIHgsIHNpemVvZiAoYSkpCiNkZWZpbmUgY24gY29udGludWUKI2RlZmluZSByZSBleGl0KDApCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IHBpaTsKdHlwZWRlZiBwYWlyPGxsLCBsbD4gcGxsOwp0eXBlZGVmIHZlY3RvcjxwaWk+IHZwaWk7CnR5cGVkZWYgdmVjdG9yPHBsbD4gdnBsbDsKCmNvbnN0IGludCBtb2Q9MWU5Kzc7CmNvbnN0IGludCBtYXhuPTJlNSsxNTsKY29uc3QgbGwgaW5mPTRlMTg7CgptdDE5OTM3XzY0IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwpsbCByYW4obGwgbCwgbGwgcikKewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsbD4gKGwsIHIpKHJuZyk7Cn0KCmlubGluZSB2b2lkIHJmKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7IGNvdXQudGllKG51bGxwdHIpOwogICAgaWYoZm9wZW4oZmlsZSIuaW5wIiwiciIpKXsKICAgICAgICBmcmVvcGVuKGZpbGUiLmlucCIsInIiLHN0ZGluKTsgZnJlb3BlbihmaWxlIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBhZGQoVCAmeCwgY29uc3QgVCAmeSkKewogICAgeCs9eTsKICAgIGlmKHg+PW1vZCkgeC09bW9kOwogICAgaWYoeDwwKSB4Kz1tb2Q7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG1heGkoVCAmYSwgVCBiKQp7CiAgICBpZihhPj1iKSByZXR1cm4gMDsKICAgIGE9YjsgcmV0dXJuIDE7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIG1pbmkoVCAmYSwgVCBiKQp7CiAgICBpZihhPD1iKSByZXR1cm4gMDsKICAgIGE9YjsgcmV0dXJuIDE7Cn0KCmludCBuLCBtOwppbnQgcGFyW21heG5dLCBzelttYXhuXTsKc3RydWN0IGVkZ2V7aW50IHUsIHY7IGxsIHAsIHc7fSBlWzMwMDAwNV07CnZlY3RvcjxwYWlyPGludCwgbGw+PiBnW21heG5dOwpsbCBkW21heG5dOwpwcmlvcml0eV9xdWV1ZTxwYWlyPGxsLCBpbnQ+LCB2ZWN0b3I8cGFpcjxsbCwgaW50Pj4sIGdyZWF0ZXI8cGFpcjxsbCwgaW50Pj4+IHE7CgppbmxpbmUgYm9vbCBjbXAoZWRnZSB4LCBlZGdlIHkpCnsKICAgIHJldHVybiB4LnA8eS5wOwp9CgppbmxpbmUgaW50IGZwKGludCB1KQp7CiAgICBpZih1PT1wYXJbdV0pIHJldHVybiBwYXJbdV07CiAgICByZXR1cm4gcGFyW3VdPWZwKHBhclt1XSk7Cn0KCmlubGluZSBib29sIHVuaXRlKGludCB1LCBpbnQgdikKewogICAgdT1mcCh1KTsgdj1mcCh2KTsKICAgIGlmKHU9PXYpIHJldHVybiAwOwogICAgaWYoc3pbdV0+c3pbdl0pIHN3YXAodSwgdik7CiAgICBzelt2XSs9c3pbdV07IHBhclt1XT12OwogICAgcmV0dXJuIDE7Cn0KCmlubGluZSBib29sIGx0KGludCB1LCBpbnQgdikKewogICAgcmV0dXJuIGZwKHUpPT1mcCh2KTsKfQoKdm9pZCBkamsoKQp7CiAgICBmZihpLCAxLCBuKSBkW2ldPWluZjsKICAgIGRbMV09MDsgcS5wdXNoKHswLCAxfSk7CiAgICB3aGlsZSghcS5lbXB0eSgpKQogICAgewogICAgICAgIHBhaXI8bGwsIGludD4gdG1wPXEudG9wKCk7IHEucG9wKCk7CiAgICAgICAgbGwgZHU9dG1wLmZpOyBpbnQgdT10bXAuc2U7CiAgICAgICAgaWYoZHUhPWRbdV0pIGNuOwogICAgICAgIGZvcihhdXRvIHg6Z1t1XSkKICAgICAgICB7CiAgICAgICAgICAgIGludCB2PXguZmk7IGxsIHc9eC5zZTsKICAgICAgICAgICAgaWYobWluaShkW3ZdLCBkdSt3KSkgcS5wdXNoKHtkW3ZdLCB2fSk7CiAgICAgICAgfQogICAgfQp9CgpzaWduZWQgbWFpbigpCnsKICAgIHJmKCk7CiAgICBjaW4+Pm4+Pm07CiAgICBmZihpLCAxLCBuKSBwYXJbaV09aSwgc3pbaV09MTsKICAgIGZmKGksIDEsIG0pCiAgICB7CiAgICAgICAgaW50IHUsIHY7IGxsIHAsIHc7IGNpbj4+dT4+dj4+cD4+dzsKICAgICAgICBlW2ldPXt1LCB2LCBwLCB3fTsKICAgIH0KICAgIHNvcnQoZSsxLCBlK20rMSwgY21wKTsKICAgIGZmKGksIDEsIG0pCiAgICB7CiAgICAgICAgaW50IHU9ZVtpXS51LCB2PWVbaV0udjsgbGwgdz1lW2ldLnc7CiAgICAgICAgdW5pdGUodSwgdik7CiAgICAgICAgZ1t1XS5wYih2LCB3KTsgZ1t2XS5wYih1LCB3KTsKICAgICAgICBpZihsdCgxLCBuKSkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PGVbaV0ucDw8c3M7CiAgICAgICAgICAgIGludCBqPWkrMTsKICAgICAgICAgICAgd2hpbGUoajw9bSAmJiBlW2pdLnA9PWVbaV0ucCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdT1lW2pdLnU7IHY9ZVtqXS52OyB3PWVbal0udzsKICAgICAgICAgICAgICAgIGdbdV0ucGIodiwgdyk7IGdbdl0ucGIodSwgdyk7CiAgICAgICAgICAgICAgICArK2o7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgZGprKCk7IGNvdXQ8PGRbbl07CiAgICByZTsKfQo=