#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
#include<cstring>
#include<map>


using namespace std;




class data
{
	public:
		int u,e,cst;
	bool operator<(const data &p)const { return cst<p.cst;}
};

vector<int>v[210];
int cost[210][210];
char store[210][35];
int n,r;
int parent[210];
bool color[210];
void prim(int src,int target)
{
//	memset(parent,0,sizeof(parent));
	memset(color,true,sizeof(color));
	priority_queue<data> q;
//	cout<<src<<" "<<target<<endl;
	data temp,current;
	vector<int>vnew;
	int top=src,a;
	color[src]=false;
	vnew.push_back(src);
	while(vnew.size()!=n)
	{

		for(int i=0;i<v[top].size();i++)
		{	a=v[top][i];
			if(color[a]==true)
			{
//				cout<<"Pushed: "<<top<<" "<<v[top][i]<<endl;
				temp.u=top;

				temp.e=a;

				temp.cst=cost[top][a];
				q.push(temp);
			}
		}
//		if(q.empty()) break;

		current=q.top();

		vnew.push_back(current.e);

		parent[current.e]=current.u;
		if(current.e==target) break;

		color[current.e]=false;
//		cout<<current.u<<" >> "<< current.e<<endl;
		top=current.e;
		q.pop();
	}


	return;


}


int main()
{
	map<string,int> m;


   int src,target,pos1,pos2,len,d,temp,caseno=1;
   char c[35];


   bool flag=false;
    while(scanf("%d%d",&n,&r)==2)
    {
        if(n==0 && r==0)
            break;
        len=1;
        flag=false;
        for(int i=0;i<r;i++)
        {
            scanf("%s",c);
            if(m[c]) pos1=m[c];
            else pos1=m[c]=len++;

            scanf("%s",c);
            if(m[c]) pos2=m[c];
            else pos2=m[c]=len++;

            v[pos1].push_back(pos2);
            v[pos2].push_back(pos1);
            scanf("%d",&d);
            cost[pos1][pos2]=d;
            cost[pos2][pos1]=d;
        }

        scanf("%s",c);
		src=m[c];

		scanf("%s",c);
        target=m[c];

        prim(src,target);
        int temp_cost=100000;
        while(target!=src)
        {
//			cout<<target<<endl;
			temp=cost[target][parent[target]];
			if(temp_cost>temp) temp_cost=temp;
			target=parent[target];
		}
		printf("Scenario #%d\n%d tons\n\n",caseno++,temp_cost);

		memset(v,0,sizeof(v));
		m.clear();
//		memset(cost,0,sizeof(cost));
//		memset(store,0,sizeof(store));
    }
    return 0;

}

