#include<cstdio>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
typedef pair<int,int>P;
int main()
{
	int n,m,p,a,b,x,y,z,i,j,k,l;
	double dp[30][1<<8],t[8];
	vector<P>e[30];
	while(scanf("%d%d%d%d%d",&n,&m,&p,&a,&b),n)
	{
		--a,--b;
		for(i=0;i<30;++i)e[i].clear();
		for(i=0;i<n;++i)scanf("%lf",t+i);
		while(p--)
		{
			scanf("%d%d%d",&x,&y,&z);--x,--y;
			e[x].push_back(P(y,z));
			e[y].push_back(P(x,z));
		}
		fill(dp[0],dp[30],1e9);
		dp[a][(1<<n)-1]=0;
		for(i=(1<<n)-1;i>0;--i)
		{
			for(j=0;j<m;++j)
			{
				if(dp[j][i]==1e9)continue;
				for(k=0;k<e[j].size();++k)
				{
					for(l=0;l<n;++l)
					{
						if(!(i&(1<<l)))continue;
						double&r=dp[e[j][k].first][i^(1<<l)];
						r=min(r,dp[j][i]+e[j][k].second/t[l]);
					}
				}
			}
		}
		double r=*min_element(dp[b],dp[b+1]);
		if(r==1e9)puts("Impossible");
		else printf("%f\n",r);
	}
	return 0;
}