#include<stdio.h>
int main(){
  double c[256][30];
  int n,m,u,mi,e,i,j,k,l,mj,t[10];
  double min;
  while(scanf("%d %d %d %d %d",&u,&n,&m,&mi,&e),u){
    for(i=0;i<u;i++)scanf("%d",&t[i]);
    int d[31][31]={0};
    while(m--){
      scanf("%d %d %d",&i,&j,&k);
      d[i][j]=d[j][i]=k;
    }
    int f[300][30]={0};
    for(i=0;i<1<<u;i++){
      for(j=1;j<=n;j++)c[i][j]=100000000;
    }
    c[mj=0][mi]=0;
    for(i=0;i<1<<u;i++){
      for(j=0;j<n;j++){
	f[mj][mi]=1;
	for(k=1;k<=n;k++){
	  if(d[mi][k]==0)continue;
	  for(l=0;l<u;l++){
	    if(mj&1<<l)continue;
	    if(c[mj|1<<l][k]>c[mj][mi]+1.0*d[mi][k]/t[l]){
	       c[mj|1<<l][k]=c[mj][mi]+1.0*d[mi][k]/t[l];
	    }
	  }
	}
	min=2100000000;
	for(k=1;k<=n;k++){
	  for(l=0;l<1<<u;l++){
	    if(f[l][k])continue;
	    if(min>c[l][k])min=c[mj=l][mi=k];
	  }
	}
      }
    }
    /*for(i=0;i<1<<u;i++){
      for(j=1;j<=n;j++)printf("%12.2f ",c[i][j]);
      printf("\n");
      }//*/
    min=210000000;
    for(i=0;i<1<<u;i++){
      if(min>c[i][e])min=c[i][e];
    }
    if(min-100000000)printf("%f\n",min);
    else             printf("Impossible\n");
  }
  return 0;
}
    