#include <iostream>
#include <vector>
#include <queue>
#include <cmath>
#include <cstdio>
using namespace std;
vector<int> data [10050];
int v,e,a,b,l,s,k,inv,ras,parent;
double ex,ex_help;
vector<double> wt(100001,-1);
int path [100500];
int top_mas [100500];
vector<int> path_help;
vector<int> path_res;
void make()
{
for (int i=1; i<=wt.size(); i++)
{
wt[i]=-1;
}
}
void Dijkstra(double ex)
{
make();
queue<int>t;
t.push(1);
wt[1]=0;
while (!t.empty())
{
int top=t.front();
t.pop();
for (int i=0; i<data[top].size(); i+=4)
{
//cout<<1<<endl;
//cout<<"!"<<data[top][i+2]/data[top][i+1]<<endl;
//cout<<data[top][i]<<" "<<wt[data[top][i]]<<endl;
if (wt[data[top][i]]>(double)data[top][i+2]/((double)data[top][i+1]+(double)ex)+wt[top] || wt[data[top][i]]==-1)
{
//cout<<2<<endl;
wt[data[top][i]]=(double)data[top][i+2]/((double)data[top][i+1]+(double)ex)+wt[top];
top_mas[data[top][i]]=top;
path[data[top][i]]=data[top][i+3];
t.push(data[top][i]);
}
}
}
}
int main()
{
cin>>v>>e;
for (int i=1; i<=e; ++i)
{
cin>>a>>b>>s>>l;
data[a].push_back(b);
data[a].push_back(s);
data[a].push_back(l);
data[a].push_back(i);
data[b].push_back(a);
data[b].push_back(s);
data[b].push_back(l);
data[b].push_back(i);
}
cin>>k;
ras=1;
parent=v;
Dijkstra(0);
double res_1=wt[v];
double eps=10e-9;
double speed_2=10e+12;
double speed_1=0;
int Misha=0;
ex_help=0;
int iter=0;
if (wt[v]!=k)
{
while(fabs(speed_2-speed_1)>eps)
{
ex_help=(speed_1+speed_2)/2;
Dijkstra(ex_help);
if (fabs(speed_2-speed_1)<eps)
break;
if(wt[v]>k)
{
speed_1=ex_help;
}
if (wt[v]<k)
{
speed_2=ex_help;
}
++Misha;
}
}
while(top_mas[parent]!=1)
{
path_help.push_back(path[parent]);
parent=top_mas[parent];
++iter;
}
printf("%.6f",ex_help);
cout<<" "<<iter+1<<endl;
cout<<path[parent]<<" ";
for (int i=path_help.size()-1; i>=0; --i)
{
cout<<path_help[i]<<" ";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNzdGRpbz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmVjdG9yPGludD4gZGF0YSBbMTAwNTBdOwppbnQgdixlLGEsYixsLHMsayxpbnYscmFzLHBhcmVudDsKZG91YmxlIGV4LGV4X2hlbHA7CnZlY3Rvcjxkb3VibGU+IHd0KDEwMDAwMSwtMSk7CmludCBwYXRoIFsxMDA1MDBdOwppbnQgdG9wX21hcyBbMTAwNTAwXTsKdmVjdG9yPGludD4gcGF0aF9oZWxwOwp2ZWN0b3I8aW50PiBwYXRoX3JlczsKdm9pZCBtYWtlKCkKewogICAgZm9yIChpbnQgaT0xOyBpPD13dC5zaXplKCk7IGkrKykKICAgIHsKICAgICAgICB3dFtpXT0tMTsKICAgIH0KfQp2b2lkIERpamtzdHJhKGRvdWJsZSBleCkKewogICAgbWFrZSgpOwogICAgcXVldWU8aW50PnQ7CiAgICB0LnB1c2goMSk7CiAgICB3dFsxXT0wOwogICAgd2hpbGUgKCF0LmVtcHR5KCkpCiAgICB7CiAgICAgICAgaW50IHRvcD10LmZyb250KCk7CiAgICAgICAgdC5wb3AoKTsKICAgICAgICBmb3IgKGludCBpPTA7IGk8ZGF0YVt0b3BdLnNpemUoKTsgaSs9NCkKICAgICAgICB7CiAgICAgICAgICAgIC8vY291dDw8MTw8ZW5kbDsKICAgICAgICAgICAgLy9jb3V0PDwiISI8PGRhdGFbdG9wXVtpKzJdL2RhdGFbdG9wXVtpKzFdPDxlbmRsOwogICAgICAgICAgICAvL2NvdXQ8PGRhdGFbdG9wXVtpXTw8IiAiPDx3dFtkYXRhW3RvcF1baV1dPDxlbmRsOwogICAgICAgICAgICBpZiAod3RbZGF0YVt0b3BdW2ldXT4oZG91YmxlKWRhdGFbdG9wXVtpKzJdLygoZG91YmxlKWRhdGFbdG9wXVtpKzFdKyhkb3VibGUpZXgpK3d0W3RvcF0gfHwgd3RbZGF0YVt0b3BdW2ldXT09LTEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vY291dDw8Mjw8ZW5kbDsKICAgICAgICAgICAgICAgd3RbZGF0YVt0b3BdW2ldXT0oZG91YmxlKWRhdGFbdG9wXVtpKzJdLygoZG91YmxlKWRhdGFbdG9wXVtpKzFdKyhkb3VibGUpZXgpK3d0W3RvcF07CiAgICAgICAgICAgICAgIHRvcF9tYXNbZGF0YVt0b3BdW2ldXT10b3A7CiAgICAgICAgICAgICAgIHBhdGhbZGF0YVt0b3BdW2ldXT1kYXRhW3RvcF1baSszXTsKICAgICAgICAgICAgICAgIHQucHVzaChkYXRhW3RvcF1baV0pOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGNpbj4+dj4+ZTsKICAgIGZvciAoaW50IGk9MTsgaTw9ZTsgKytpKQogICAgewogICAgICAgIGNpbj4+YT4+Yj4+cz4+bDsKICAgICAgICBkYXRhW2FdLnB1c2hfYmFjayhiKTsKICAgICAgICBkYXRhW2FdLnB1c2hfYmFjayhzKTsKICAgICAgICBkYXRhW2FdLnB1c2hfYmFjayhsKTsKICAgICAgICBkYXRhW2FdLnB1c2hfYmFjayhpKTsKICAgICAgICBkYXRhW2JdLnB1c2hfYmFjayhhKTsKICAgICAgICBkYXRhW2JdLnB1c2hfYmFjayhzKTsKICAgICAgICBkYXRhW2JdLnB1c2hfYmFjayhsKTsKICAgICAgICBkYXRhW2JdLnB1c2hfYmFjayhpKTsKICAgIH0KICAgIGNpbj4+azsKICAgIHJhcz0xOwogICAgcGFyZW50PXY7CiAgICBEaWprc3RyYSgwKTsKICAgIGRvdWJsZSByZXNfMT13dFt2XTsKICAgIGRvdWJsZSBlcHM9MTBlLTk7CiAgICBkb3VibGUgc3BlZWRfMj0xMGUrMTI7CiAgICBkb3VibGUgc3BlZWRfMT0wOwogICAgaW50IE1pc2hhPTA7CiAgICBleF9oZWxwPTA7CiAgICBpbnQgaXRlcj0wOwogICAgaWYgKHd0W3ZdIT1rKQogICAgewogICAgICAgIHdoaWxlKGZhYnMoc3BlZWRfMi1zcGVlZF8xKT5lcHMpCiAgICAgICAgewogICAgICAgICAgICBleF9oZWxwPShzcGVlZF8xK3NwZWVkXzIpLzI7CiAgICAgICAgICAgIERpamtzdHJhKGV4X2hlbHApOwogICAgICAgICAgICBpZiAoZmFicyhzcGVlZF8yLXNwZWVkXzEpPGVwcykKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGlmKHd0W3ZdPmspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNwZWVkXzE9ZXhfaGVscDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHd0W3ZdPGspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNwZWVkXzI9ZXhfaGVscDsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICsrTWlzaGE7CgogICAgICAgIH0KICAgIH0KCiAgICAgICAgICAgIHdoaWxlKHRvcF9tYXNbcGFyZW50XSE9MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcGF0aF9oZWxwLnB1c2hfYmFjayhwYXRoW3BhcmVudF0pOwogICAgICAgICAgICAgICAgcGFyZW50PXRvcF9tYXNbcGFyZW50XTsKICAgICAgICAgICAgICAgICsraXRlcjsKICAgICAgICAgICAgfQogICAgICAgIHByaW50ZigiJS42ZiIsZXhfaGVscCk7CiAgICAgICAgY291dDw8IiAiPDxpdGVyKzE8PGVuZGw7CiAgICAgICAgY291dDw8cGF0aFtwYXJlbnRdPDwiICI7CiAgICAgICAgZm9yIChpbnQgaT1wYXRoX2hlbHAuc2l6ZSgpLTE7IGk+PTA7IC0taSkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQ8PHBhdGhfaGVscFtpXTw8IiAiOwogICAgICAgIH0KCgoKCgoKCgoKfQ==