/// Milk Pumping Gold USACO
/// Author: PmQwerty
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
const int INF = 1e9 + 7;
struct Edge{
int u;
int w;
int f;
Edge(){
}
Edge(int u, int w, int f): u(u), w(w), f(f) {}
};
vector<Edge> a[MAXN];
int n, m;
int d[MAXN];
int dijkstra(int f){
priority_queue<pair<int, int>> pq;
for (int i = 0; i < n; i++){
d[i] = INF;
}
d[0] = 0;
pq.push({0, 0});
while (!pq.empty()){
int u = pq.top().second;
int w = pq.top().first;
pq.pop();
for (Edge v: a[u]){
if (v.f < f) continue;
if (d[v.u] > w + v.w){
d[v.u] = w + v.w;
pq.push({d[v.u], v.u});
}
}
}
return (d[n - 1] == INF ? -1 : d[n - 1]);
}
int main(){
//freopen("pump.in", "r", stdin);
//freopen("pump.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
vector<int> flows;
for (int i = 1; i <= m; i++){
int u, v, c, f;
cin >> u >> v >> c >> f;
flows.push_back(f);
u--;
v--;
a[u].push_back(Edge(v, c, f));
a[v].push_back(Edge(u, c, f));
}
int ans = -1;
for (int f: flows){
int cur = dijkstra(f);
if (cur == -1) continue;
double r = f * 1.0 / cur;
ans = max(ans, (int)(r * 1e6));
}
cout << ans << '\n';
}
Ly8vIE1pbGsgUHVtcGluZyBHb2xkIFVTQUNPCi8vLyBBdXRob3I6IFBtUXdlcnR5CiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNQVhOID0gMTAxMDsKY29uc3QgaW50IElORiA9IDFlOSArIDc7CnN0cnVjdCBFZGdlewogICAgaW50IHU7CiAgICBpbnQgdzsKICAgIGludCBmOwogICAgRWRnZSgpewogICAgfQogICAgRWRnZShpbnQgdSwgaW50IHcsIGludCBmKTogdSh1KSwgdyh3KSwgZihmKSB7fQp9Owp2ZWN0b3I8RWRnZT4gYVtNQVhOXTsKaW50IG4sIG07CmludCBkW01BWE5dOwppbnQgZGlqa3N0cmEoaW50IGYpewogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQsIGludD4+IHBxOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgICBkW2ldID0gSU5GOwogICAgfQogICAgZFswXSA9IDA7CiAgICBwcS5wdXNoKHswLCAwfSk7CiAgICB3aGlsZSAoIXBxLmVtcHR5KCkpewogICAgICAgIGludCB1ID0gcHEudG9wKCkuc2Vjb25kOwogICAgICAgIGludCB3ID0gcHEudG9wKCkuZmlyc3Q7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgZm9yIChFZGdlIHY6IGFbdV0pewogICAgICAgICAgICAgaWYgKHYuZiA8IGYpIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKGRbdi51XSA+IHcgKyB2LncpewogICAgICAgICAgICAgICAgIGRbdi51XSA9IHcgKyB2Lnc7CiAgICAgICAgICAgICAgICAgcHEucHVzaCh7ZFt2LnVdLCB2LnV9KTsKICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKGRbbiAtIDFdID09IElORiA/IC0xIDogZFtuIC0gMV0pOwp9CmludCBtYWluKCl7CiAgICAvL2ZyZW9wZW4oInB1bXAuaW4iLCAiciIsIHN0ZGluKTsKICAgIC8vZnJlb3BlbigicHVtcC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IG07CiAgICB2ZWN0b3I8aW50PiBmbG93czsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKyl7CiAgICAgICAgIGludCB1LCB2LCBjLCBmOwogICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IGMgPj4gZjsKICAgICAgICAgZmxvd3MucHVzaF9iYWNrKGYpOwogICAgICAgICB1LS07CiAgICAgICAgIHYtLTsKICAgICAgICAgYVt1XS5wdXNoX2JhY2soRWRnZSh2LCBjLCBmKSk7CiAgICAgICAgIGFbdl0ucHVzaF9iYWNrKEVkZ2UodSwgYywgZikpOwogICAgfQogICAgaW50IGFucyA9IC0xOwogICAgZm9yIChpbnQgZjogZmxvd3MpewogICAgICAgICBpbnQgY3VyID0gZGlqa3N0cmEoZik7CiAgICAgICAgIGlmIChjdXIgPT0gLTEpIGNvbnRpbnVlOwogICAgICAgICBkb3VibGUgciA9IGYgKiAxLjAgLyBjdXI7CiAgICAgICAgIGFucyA9IG1heChhbnMsIChpbnQpKHIgKiAxZTYpKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7Cn0K