1 #include <iostream>
2 #include <algorithm>
3 #include <cstdio>
4 #include <cstring>
5 #include <cstdlib>
6 using namespace std;
7
8 struct EDGE{
9 int u,v,c;
10 bool operator < (EDGE b) const{
11 return c<b.c;
12 }
13 }e[6000];
14 int fa[600],n,m,ansmax=1,ansmin,st,en;
15 int f(int x){return x==fa[x]?x:fa[x]=f(fa[x]);}
16 void init(){for(int i=1;i<=n;i++)fa[i]=i;}
17 int gcd(int a,int b){return b?gcd(b,a%b):a;}
18
19 int main(){
20 scanf("%d%d",&n,&m);
21 for(int i=0;i<m;i++)scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].c);
22 scanf("%d%d",&st,&en);
23 sort(e,e+m);
24 for(int i=0,Min,Max,x;i<m;i=x+1){
25 Min=Max=-1;
26 init();
27 for(x=i;x<m;x++){
28 fa[f(e[x].u)]=f(e[x].v);
29 if(f(st)==f(en)){
30 Max=e[x].c;
31 break;}}
32 if(Max==-1){if(!ansmin)return 0&puts("IMPOSSIBLE");else break;}
33 init();
34 for(;x>=0;x--){
35 fa[f(e[x].u)]=f(e[x].v);
36 if(f(st)==f(en)){
37 Min=e[x].c;
38 break;}}
39 if(Min==-1){if(!ansmin)return 0&puts("IMPOSSIBLE");else break;}
40 int g=gcd(Max,Min);Max/=g,Min/=g;
41 if(ansmax*Min>ansmin*Max)ansmax=Max,ansmin=Min;
42 }
43 ansmin==1?printf("%d\n",ansmax):printf("%d/%d\n",ansmax,ansmin);
44 }