#include<iostream>
#include<algorithm>
#include<vector>
#define max 110
int status[ max] ;
#define size 100000
int n,r,s,d,t;
int adj[ max] [ max] ;
using namespace std;
vector< int > v;
struct st
{
int v;
int trst;
int city[ max] ;
st( int vr,int p)
{
v= vr;
trst= p;
for ( int i= 1 ; i<= n; i++ )
{
city[ i] = 0 ;
}
city[ vr] = 1 ;
}
} ;
struct queue
{
int front;
int rear;
st* arr[ size] ;
void insert( st* ) ;
st* del( ) ;
queue( ) ;
} q;
queue:: queue ( )
{
front= - 1 ;
rear= - 1 ;
}
st* queue:: del ( )
{
if ( front! = - 1 )
{
st* f= arr[ front] ;
if ( front== rear)
{
front= - 1 ;
rear= - 1 ;
}
else
{
front= ( front+ 1 ) % size;
}
return f;
}
}
void queue:: insert ( st* f)
{
rear= ( rear+ 1 ) % size;
arr[ rear] = f;
if ( front== - 1 )
front= 0 ;
}
void reset_adj( )
{
for ( int i= 1 ; i<= n; i++ )
{
for ( int j= 1 ; j<= n; j++ )
{
adj[ i] [ j] = - 1 ;
}
}
}
void set( st* temp,st* s1)
{
for ( int i= 1 ; i<= n; i++ )
{
if ( temp- > city[ i] == 1 )
{
s1- > city[ i] = 1 ;
}
}
}
void get_path( )
{
int p;
while ( q.front ! = - 1 )
{
st* temp= q.del ( ) ;
for ( int i= 1 ; i<= n; i++ )
{
if ( ( adj[ temp- > v] [ i] > 0 ) && ( temp- > city[ i] == 0 ) )
{
if ( adj[ temp- > v] [ i] < temp- > trst)
{
p= adj[ temp- > v] [ i] ;
}
else
{
p= temp- > trst;
}
st* s1= new st( i,p) ;
set( temp,s1) ;
if ( i== t)
{
v.push_back ( s1- > trst) ;
for ( int i= 1 ; i<= n; i++ )
{
s1- > city[ i] = 1 ;
}
}
q.insert ( s1) ;
}
}
}
}
int main( )
{
int v1,v2,wt,m;
int tst= 0 ;
while ( cin >> n>> r)
{
if ( ( n== 0 ) && ( r== 0 ) )
break ;
reset_adj( ) ;
tst++ ;
for ( int i= 1 ; i<= r; i++ )
{
cin >> v1>> v2>> wt;
adj[ v1] [ v2] = wt;
adj[ v2] [ v1] = wt;
}
cin >> s>> t>> d;
if ( d== 0 )
{
m= 0 ;
}
if ( ( s! = t) && ( d! = 0 ) )
{
st* s1= new st( s,d+ 1 ) ;
q.insert ( s1) ;
get_path( ) ;
sort( v.begin ( ) ,v.end ( ) ) ;
int p= ( v.back ( ) - 1 ) ;
if ( d% p== 0 )
{
m= d/ p;
}
else
{
m= ( d/ p) + 1 ;
}
}
if ( ( s== t) && ( d! = 0 ) )
{
m= 1 ;
}
cout << "Scenario #" << tst<< "\n " ;
cout << "Minimum Number of Trips = " << m<< "\n " ;
cout << "\n " ;
v.erase ( v.begin ( ) ,v.end ( ) ) ;
}
return 0 ;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8dmVjdG9yPgojZGVmaW5lIG1heCAxMTAKaW50IHN0YXR1c1ttYXhdOwojZGVmaW5lIHNpemUgMTAwMDAwCmludCBuLHIscyxkLHQ7CmludCBhZGpbbWF4XVttYXhdOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2ZWN0b3I8aW50PiB2OwpzdHJ1Y3Qgc3QKewoJaW50IHY7CglpbnQgdHJzdDsKCWludCBjaXR5W21heF07CglzdChpbnQgdnIsaW50IHApCgl7CgkJdj12cjsKCQl0cnN0PXA7CgkJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJewoJCQljaXR5W2ldPTA7CgkJfQoJCWNpdHlbdnJdPTE7Cgl9Cn07CnN0cnVjdCBxdWV1ZQp7CglpbnQgZnJvbnQ7CglpbnQgcmVhcjsKCXN0KiBhcnJbc2l6ZV07Cgl2b2lkIGluc2VydChzdCopOwoJc3QqIGRlbCgpOwoJcXVldWUoKTsKfXE7CnF1ZXVlOjpxdWV1ZSgpCnsKICAgICAgIGZyb250PS0xOwoJICAgcmVhcj0tMTsgCQp9CnN0KiBxdWV1ZTo6ZGVsKCkKewoJCglpZihmcm9udCE9LTEpCgl7CgkJc3QqIGY9YXJyW2Zyb250XTsKCQlpZihmcm9udD09cmVhcikKCQl7CgkJCWZyb250PS0xOwoJCQlyZWFyPS0xOwoJCX0KCQllbHNlCgkJewoJCSAgZnJvbnQ9KGZyb250KzEpJXNpemU7CgkgICAgfQoJCXJldHVybiBmOwogICB9CiAgICAgCn0Kdm9pZCBxdWV1ZTo6aW5zZXJ0KHN0KiBmKQp7CgkgICByZWFyPShyZWFyKzEpJXNpemU7CgkgICBhcnJbcmVhcl09ZjsKCSAgIGlmKGZyb250PT0tMSkKCSAgICAgZnJvbnQ9MDsJICAgCn0Kdm9pZCByZXNldF9hZGooKQp7Cglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQlmb3IoaW50IGo9MTtqPD1uO2orKykKCQl7CgkJCWFkaltpXVtqXT0tMTsKCQl9Cgl9Cn0Kdm9pZCBzZXQoc3QqIHRlbXAsc3QqIHMxKQp7Cglmb3IoaW50IGk9MTtpPD1uO2krKykKCXsKCQlpZih0ZW1wLT5jaXR5W2ldPT0xKQoJCXsKCQkJczEtPmNpdHlbaV09MTsKCQl9Cgl9Cn0Kdm9pZCBnZXRfcGF0aCgpCnsKCWludCBwOwoJd2hpbGUocS5mcm9udCE9LTEpCgl7CgkJc3QqIHRlbXA9cS5kZWwoKTsKCQlmb3IoaW50IGk9MTtpPD1uO2krKykKCQl7CgkJICAgaWYoKGFkalt0ZW1wLT52XVtpXT4wKSYmKHRlbXAtPmNpdHlbaV09PTApKQoJCSAgIHsKCQkgICAJCgkJCWlmKGFkalt0ZW1wLT52XVtpXTx0ZW1wLT50cnN0KQoJCSAgIAl7CgkJICAgCQlwPWFkalt0ZW1wLT52XVtpXTsKCQkgICAJfQoJCSAgIAllbHNlCgkJICAgCXsKCQkgICAJCXA9dGVtcC0+dHJzdDsKCQkgICAJfQoJCSAgIAlzdCogczE9bmV3IHN0KGkscCk7CgkJICAgCXNldCh0ZW1wLHMxKTsKCQkgICAJaWYoaT09dCkKCQkgICAJewoJCSAgIAkJdi5wdXNoX2JhY2soczEtPnRyc3QpOwoJCSAgIAkJZm9yKGludCBpPTE7aTw9bjtpKyspCgkJICAgCQl7CgkJICAgCQkJczEtPmNpdHlbaV09MTsKCQkgICAJCX0KCQkgICAJfQoJCSAgIAlxLmluc2VydChzMSk7CgkJICAgfQkKCQl9Cgl9Cn0KaW50IG1haW4oKQp7IAogICAgaW50IHYxLHYyLHd0LG07CiAgICBpbnQgdHN0PTA7CiAgICB3aGlsZShjaW4+Pm4+PnIpCiAgICB7CiAgICAJaWYoKG49PTApJiYocj09MCkpCiAgICAJICAgYnJlYWs7CiAgICAJcmVzZXRfYWRqKCk7CiAgICAJdHN0Kys7CiAgICAJZm9yKGludCBpPTE7aTw9cjtpKyspCiAgICAJewogICAgCSAgIGNpbj4+djE+PnYyPj53dDsKCQkgICBhZGpbdjFdW3YyXT13dDsKCQkgICBhZGpbdjJdW3YxXT13dDsKCQkgICAJCiAgICAJfQogICAgICAgIGNpbj4+cz4+dD4+ZDsKICAgICAgICBpZihkPT0wKQogICAgICAgIHsKICAgICAgICAJbT0wOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZigocyE9dCkmJihkIT0wKSkKICAgICAgICB7CiAgICAgICAgCiAgICAgICAgc3QqIHMxPW5ldyBzdChzLGQrMSk7CiAgICAgICAgcS5pbnNlcnQoczEpOwogICAgICAgIGdldF9wYXRoKCk7CiAgICAgICAgc29ydCh2LmJlZ2luKCksdi5lbmQoKSk7CiAgICAgICAgaW50IHA9KHYuYmFjaygpLTEpOwogICAgICAgIGlmKGQlcD09MCkKICAgICAgICB7CiAgICAgICAgCW09ZC9wOwogICAgICAgIH0KICAgICAgICBlbHNlIAogICAgICAgIHsKICAgICAgICAJbT0oZC9wKSsxOwogICAgICAgIH0KCQl9CgkJaWYoKHM9PXQpJiYoZCE9MCkpCgkJewoJCQltPTE7CgkJfQogICAgICAgIGNvdXQ8PCJTY2VuYXJpbyAjIjw8dHN0PDwiXG4iOwogICAgICAgIGNvdXQ8PCJNaW5pbXVtIE51bWJlciBvZiBUcmlwcyA9ICI8PG08PCJcbiI7CiAgICAgICAgY291dDw8IlxuIjsKICAgICAgICB2LmVyYXNlKHYuYmVnaW4oKSx2LmVuZCgpKTsKICAgIH0KICAgcmV0dXJuIDA7Cn0K
stdin
NSA2CjIgNCA0NQoxIDIgMzUKMSAzIDE5CjIgNSA5NgozIDUgMjgKMiAzIDE3CjEgMSAxMDAKNSA2CjIgNCA0NQoxIDIgMzUKMSAzIDE5CjIgNSA5NgozIDUgMjgKMiAzIDE3CjEgNSAxMDAKNSA3CjEgNCAxMAoyIDQgNDUKMSAyIDM1CjEgMyAxOQoyIDUgOTYKMyA1IDI4CjIgMyAxNwoxIDUgMTAwCjUgNgoyIDQgNDUKMSAyIDM1CjEgMyAxOQoyIDUgOTYKMyA1IDI4CjIgMyAxNwo1IDIgMjUKMCAw
5 6
2 4 45
1 2 35
1 3 19
2 5 96
3 5 28
2 3 17
1 1 100
5 6
2 4 45
1 2 35
1 3 19
2 5 96
3 5 28
2 3 17
1 5 100
5 7
1 4 10
2 4 45
1 2 35
1 3 19
2 5 96
3 5 28
2 3 17
1 5 100
5 6
2 4 45
1 2 35
1 3 19
2 5 96
3 5 28
2 3 17
5 2 25
0 0