#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define int long long
#define pii pair<int,int>
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
#define REP(i, a, b) for(int i = (a), _b = (b); i >= _b; i--)
using namespace std;
const int INF = 0x3f3f3f3f3f3f3f3f;
const int MAX_N = 2e5;
const int MAX_M = 3e5;
struct Disjoint_Set_Union{
int leader[MAX_N + 5], rnk[MAX_N + 5];
void build(int n){
FOR(i, 1, n){
leader[i] = i;
rnk[i] = 1;
}
}
int get(int u){
if(u == leader[u]) return u;
return leader[u] = get(leader[u]);
}
void unite(int u, int v){
int x = get(u), y = get(v);
if(x == y) return;
if(rnk[x] < rnk[y]) swap(x, y);
rnk[x] += rnk[y];
leader[y] = leader[x];
}
}dsu;
struct Triple{
int fi, sec, thr;
Triple(int _fi = 0, int _sec = 0, int _thr = 0){
fi = _fi;
sec = _sec;
thr = _thr;
}
bool operator < (const Triple &other) const{
return fi < other.fi;
}
};
vector<Triple> g[MAX_N + 5];
Triple edges[MAX_M + 5];
int dist[MAX_N + 5];
int n, m;
void Input(){
cin >> n >> m;
FOR(i, 1, m){
int u, v, p, w;
cin >> u >> v >> p >> w;
g[u].pb({v, p, w});
g[v].pb({u, p, w});
edges[i] = {p, u, v};
}
}
int Kruskal(){
sort(edges + 1, edges + m + 1);
dsu.build(n);
FOR(i, 1, m){
int u = edges[i].sec, v = edges[i].thr;
int p = edges[i].fi;
dsu.unite(u, v);
if(dsu.get(1) == dsu.get(n)) return p;
}
}
int dijkstra(int max_p){
FOR(i, 1, n) dist[i] = INF;
priority_queue<pii, vector<pii>, greater<pii>> pq;
pq.push({0, 1});
dist[1] = 0;
while(sz(pq)){
int len = pq.top().fi;
int u = pq.top().sec;
pq.pop();
if(len > dist[u]) continue;
for(Triple x : g[u]){
int v = x.fi, p = x.sec, w = x.thr;
if(p > max_p) continue;
if(dist[v] > dist[u] + w){
dist[v] = dist[u] + w;
pq.push({dist[v], v});
}
}
}
return dist[n];
}
void Solve(){
int max_p = Kruskal();
cout << max_p << " " << dijkstra(max_p);
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
Solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBzeih2KSAoaW50KSh2KS5zaXplKCkKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA+PSBfYjsgaS0tKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAweDNmM2YzZjNmM2YzZjNmM2Y7CmNvbnN0IGludCBNQVhfTiA9IDJlNTsKY29uc3QgaW50IE1BWF9NID0gM2U1OwoKc3RydWN0IERpc2pvaW50X1NldF9VbmlvbnsKICAgIGludCBsZWFkZXJbTUFYX04gKyA1XSwgcm5rW01BWF9OICsgNV07CgogICAgdm9pZCBidWlsZChpbnQgbil7CiAgICAgICAgRk9SKGksIDEsIG4pewogICAgICAgICAgICBsZWFkZXJbaV0gPSBpOwogICAgICAgICAgICBybmtbaV0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgZ2V0KGludCB1KXsKICAgICAgICBpZih1ID09IGxlYWRlclt1XSkgcmV0dXJuIHU7CiAgICAgICAgcmV0dXJuIGxlYWRlclt1XSA9IGdldChsZWFkZXJbdV0pOwogICAgfQoKICAgIHZvaWQgdW5pdGUoaW50IHUsIGludCB2KXsKICAgICAgICBpbnQgeCA9IGdldCh1KSwgeSA9IGdldCh2KTsKCiAgICAgICAgaWYoeCA9PSB5KSByZXR1cm47CiAgICAgICAgaWYocm5rW3hdIDwgcm5rW3ldKSBzd2FwKHgsIHkpOwoKICAgICAgICBybmtbeF0gKz0gcm5rW3ldOwogICAgICAgIGxlYWRlclt5XSA9IGxlYWRlclt4XTsKICAgIH0KfWRzdTsKCnN0cnVjdCBUcmlwbGV7CiAgICBpbnQgZmksIHNlYywgdGhyOwoKICAgIFRyaXBsZShpbnQgX2ZpID0gMCwgaW50IF9zZWMgPSAwLCBpbnQgX3RociA9IDApewogICAgICAgIGZpID0gX2ZpOwogICAgICAgIHNlYyA9IF9zZWM7CiAgICAgICAgdGhyID0gX3RocjsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFRyaXBsZSAmb3RoZXIpIGNvbnN0ewogICAgICAgIHJldHVybiBmaSA8IG90aGVyLmZpOwogICAgfQp9OwoKdmVjdG9yPFRyaXBsZT4gZ1tNQVhfTiArIDVdOwpUcmlwbGUgZWRnZXNbTUFYX00gKyA1XTsKaW50IGRpc3RbTUFYX04gKyA1XTsKaW50IG4sIG07Cgp2b2lkIElucHV0KCl7CiAgICBjaW4gPj4gbiA+PiBtOwoKICAgIEZPUihpLCAxLCBtKXsKICAgICAgICBpbnQgdSwgdiwgcCwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHAgPj4gdzsKCiAgICAgICAgZ1t1XS5wYih7diwgcCwgd30pOwogICAgICAgIGdbdl0ucGIoe3UsIHAsIHd9KTsKICAgICAgICBlZGdlc1tpXSA9IHtwLCB1LCB2fTsKICAgIH0KfQoKaW50IEtydXNrYWwoKXsKICAgIHNvcnQoZWRnZXMgKyAxLCBlZGdlcyArIG0gKyAxKTsKICAgIGRzdS5idWlsZChuKTsKCiAgICBGT1IoaSwgMSwgbSl7CiAgICAgICAgaW50IHUgPSBlZGdlc1tpXS5zZWMsIHYgPSBlZGdlc1tpXS50aHI7CiAgICAgICAgaW50IHAgPSBlZGdlc1tpXS5maTsKCiAgICAgICAgZHN1LnVuaXRlKHUsIHYpOwogICAgICAgIGlmKGRzdS5nZXQoMSkgPT0gZHN1LmdldChuKSkgcmV0dXJuIHA7CiAgICB9Cn0KCmludCBkaWprc3RyYShpbnQgbWF4X3ApewogICAgRk9SKGksIDEsIG4pIGRpc3RbaV0gPSBJTkY7CiAgICBwcmlvcml0eV9xdWV1ZTxwaWksIHZlY3RvcjxwaWk+LCBncmVhdGVyPHBpaT4+IHBxOwoKICAgIHBxLnB1c2goezAsIDF9KTsKICAgIGRpc3RbMV0gPSAwOwoKICAgIHdoaWxlKHN6KHBxKSl7CiAgICAgICAgaW50IGxlbiA9IHBxLnRvcCgpLmZpOwogICAgICAgIGludCB1ID0gcHEudG9wKCkuc2VjOwogICAgICAgIHBxLnBvcCgpOwoKICAgICAgICBpZihsZW4gPiBkaXN0W3VdKSBjb250aW51ZTsKCiAgICAgICAgZm9yKFRyaXBsZSB4IDogZ1t1XSl7CiAgICAgICAgICAgIGludCB2ID0geC5maSwgcCA9IHguc2VjLCB3ID0geC50aHI7CiAgICAgICAgICAgIGlmKHAgPiBtYXhfcCkgY29udGludWU7CiAgICAgICAgICAgIGlmKGRpc3Rbdl0gPiBkaXN0W3VdICsgdyl7CiAgICAgICAgICAgICAgICBkaXN0W3ZdID0gZGlzdFt1XSArIHc7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtkaXN0W3ZdLCB2fSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGRpc3Rbbl07Cn0KCnZvaWQgU29sdmUoKXsKICAgIGludCBtYXhfcCA9IEtydXNrYWwoKTsKICAgIGNvdXQgPDwgbWF4X3AgPDwgIiAiIDw8IGRpamtzdHJhKG1heF9wKTsKfQoKc2lnbmVkIG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIElucHV0KCk7CiAgICBTb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9Cg==