#include<bits/stdc++.h>
using namespace std;
int fa[1005];
int getfa(int x)
{
if(fa[x]==x)
return x;
else
{
return fa[x]=getfa(fa[x]);
}
}
int book[1005];
int u[1005],v[1005],w[1005],t[1005],n,m,f;
struct qwq{
int id;
double c;
}q[10005];
bool cmp(qwq a,qwq b)
{
return a.c<b.c;
}
bool check(double x)
{
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
q[i].id=i,q[i].c=1.0*w[i]+1.0*x*t[i];
// for(int i=1;i<=m;i++)
// q.push(make_pair((1.0*w[i]+1.0*x*t[i]),i));
sort(q+1,q+m+1,cmp);
double ans=0;
int cnt=0;
for(int i=1;i<=m;i++)
{
int id=q[i].id;
double c=q[i].c;
int fu=getfa(u[id]),fv=getfa(v[id]);
if(fu==fv)
continue;
cnt++;
ans+=c;
fa[fu]=fv;
if(cnt>=n-1)
break;
}
if(ans<=f)
return true;
else
return false;
}
int main()
{
scanf("%d%d%d",&n,&m,&f);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d%d",&u[i],&v[i],&w[i],&t[i]);
}
double l=0,r=1e5,eps=1e-7,mid;
while(r-l>eps)
{
mid=(l+r)/2;//printf("%.4f\n",mid);
if(check(mid))
l=mid;
else
r=mid;
}
if(l!=0)
printf("%.4lf",r);
else
printf("%0.0000");
}