#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N=7005,M=1e5+10;
int h[N],e[M],ne[M],w[M],p[M],idx;
int dis[M],cnt[M];
bool st[M];
int n,m;
void add(int a,int b,int c,int d)
{
e[idx]=b;
w[idx]=c;
p[idx]=d;
ne[idx]=h[a];
h[a]=idx++;
}
bool spfa(double mid)
{
memset(st,0,sizeof st);
memset(cnt,0,sizeof cnt);
queue<int>q;
for(int i=1;i<=n;i++)
{
q.push(i);
st[i]=true;
}
int res=0;
while(q.size())
{
int t=q.front();
q.pop();
st[t]=false;
for(int i=h[t];i!=-1;i=ne[i])
{
int j=e[i];
if(dis[j]<dis[t]+w[i]-p[i]*mid)
{
dis[j]=dis[t]+w[i]-p[i]*mid;
if(++res>=10000)return true;
cnt[j]=cnt[t]+1;
if(cnt[j]>=n)return true;
if(!st[j])
{
st[j]=true;
q.push(j);
}
}
}
}
return false;
}
signed main()
{
//ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
scanf("%lld%lld",&n,&m);
memset(h,-1,sizeof h);
for(int i=1;i<=m;i++)
{
int a,b,c,d;
scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
add(a,b,c,d);
}
if(!spfa(0))printf("-1");
else
{
double l=1,r=1000;
while(r-l>1e-4)
{
double mid=(l+r)/2;
if(spfa(mid))l=mid;
else r=mid;
}
printf("%.1lf",r);
}
return 0;
}