#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <fstream>
#include <queue>
#define rep(i, l, r) for(int i = l; i <= r; i++)
#define down(i, l, r) for(int i = l; i >= r; i--)
#define MS 1234
#define MAX 1037471823
#define Q 12345678
using namespace std;
struct node
{
int x, y, z;
bool operator < (const node &k) const { return z < k.z; }
} c[5678];
int n, m, s, t, ss, tt, h[567], v[34567];
long long fz, fm;
int Head(int x) { while (h[h[x]] != h[x]) h[x] = h[h[x]]; return h[x]; }
int gcd(int x, int y) { return y==0 ? x : x<y ? gcd(x, y%x) : gcd(y, x%y); }
int main()
{
scanf("%d%d", &n, &m);
fm = 1; fz = 123456;
rep(i, 1, m) scanf("%d%d%d", &c[i].x, &c[i].y, &c[i].z); sort(c+1, c+1+m); c[m+1].z = MAX;
v[1] = 1; rep(i, 2, 30000) { v[i] = v[i+1]; while (c[v[i]].z < i) v[i]++; }
scanf("%d%d", &s, &t); ss = 1;
while (true)
{
rep(i, 1, n) h[i] = i;
while (Head(s) != Head(t) && ss <= 30000)
{
rep(i, v[ss], v[ss+1]-1) if (Head(c[i].x) != Head(c[i].y)) h[h[c[i].x]] = h[c[i].y];
ss++;
}
if (ss > 30000) break; ss--;
tt = ss;
rep(i, 1, n) h[i] = i;
while (Head(s) != Head(t))
{
rep(i, v[tt], v[tt+1]-1) if (Head(c[i].x) != Head(c[i].y)) h[h[c[i].x]] = h[c[i].y];
tt--;
}
tt++; if (fm*ss < fz*tt) fz = ss, fm = tt; ss = tt+1;
}
n = gcd(fz, fm);
if (fz == 123456) printf("IMPOSSIBLE\n"); else if (fz % fm == 0) printf("%lld\n", fz/fm); else printf("%lld/%lld\n", fz/n, fm/n);
return 0;
}
I2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxxdWV1ZT4KCiNkZWZpbmUgcmVwKGksIGwsIHIpIGZvcihpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKQojZGVmaW5lIGRvd24oaSwgbCwgcikgZm9yKGludCBpID0gbDsgaSA+PSByOyBpLS0pCiNkZWZpbmUgTVMgMTIzNAojZGVmaW5lIE1BWCAxMDM3NDcxODIzCiNkZWZpbmUgUSAxMjM0NTY3OAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlCnsKCWludCB4LCB5LCB6OwoJYm9vbCBvcGVyYXRvciA8IChjb25zdCBub2RlICZrKSBjb25zdCB7IHJldHVybiB6IDwgay56OyB9Cn0gY1s1Njc4XTsKaW50IG4sIG0sIHMsIHQsIHNzLCB0dCwgaFs1NjddLCB2WzM0NTY3XTsKbG9uZyBsb25nIGZ6LCBmbTsKCmludCBIZWFkKGludCB4KSB7IHdoaWxlIChoW2hbeF1dICE9IGhbeF0pIGhbeF0gPSBoW2hbeF1dOyByZXR1cm4gaFt4XTsgfQoKaW50IGdjZChpbnQgeCwgaW50IHkpIHsgcmV0dXJuIHk9PTAgPyB4IDogeDx5ID8gZ2NkKHgsIHkleCkgOiBnY2QoeSwgeCV5KTsgfQoKaW50IG1haW4oKQp7CglzY2FuZigiJWQlZCIsICZuLCAmbSk7CglmbSA9IDE7IGZ6ID0gMTIzNDU2OwoJcmVwKGksIDEsIG0pIHNjYW5mKCIlZCVkJWQiLCAmY1tpXS54LCAmY1tpXS55LCAmY1tpXS56KTsgc29ydChjKzEsIGMrMSttKTsgY1ttKzFdLnogPSBNQVg7Cgl2WzFdID0gMTsgcmVwKGksIDIsIDMwMDAwKSB7IHZbaV0gPSB2W2krMV07IHdoaWxlIChjW3ZbaV1dLnogPCBpKSB2W2ldKys7IH0KCXNjYW5mKCIlZCVkIiwgJnMsICZ0KTsgc3MgPSAxOyAKCXdoaWxlICh0cnVlKQoJewoJCXJlcChpLCAxLCBuKSBoW2ldID0gaTsKCQl3aGlsZSAoSGVhZChzKSAhPSBIZWFkKHQpICYmIHNzIDw9IDMwMDAwKSAKCQl7IAoJCQlyZXAoaSwgdltzc10sIHZbc3MrMV0tMSkgaWYgKEhlYWQoY1tpXS54KSAhPSBIZWFkKGNbaV0ueSkpIGhbaFtjW2ldLnhdXSA9IGhbY1tpXS55XTsKCQkJc3MrKzsKCQl9CgkJaWYgKHNzID4gMzAwMDApIGJyZWFrOyBzcy0tOwoJCXR0ID0gc3M7CgkJcmVwKGksIDEsIG4pIGhbaV0gPSBpOwoJCXdoaWxlIChIZWFkKHMpICE9IEhlYWQodCkpIAoJCXsgCgkJCXJlcChpLCB2W3R0XSwgdlt0dCsxXS0xKSBpZiAoSGVhZChjW2ldLngpICE9IEhlYWQoY1tpXS55KSkgaFtoW2NbaV0ueF1dID0gaFtjW2ldLnldOwoJCQl0dC0tOwoJCX0KCQl0dCsrOyBpZiAoZm0qc3MgPCBmeip0dCkgZnogPSBzcywgZm0gPSB0dDsgc3MgPSB0dCsxOwoJfQoJbiA9IGdjZChmeiwgZm0pOwoJaWYgKGZ6ID09IDEyMzQ1NikgcHJpbnRmKCJJTVBPU1NJQkxFXG4iKTsgZWxzZSBpZiAoZnogJSBmbSA9PSAwKSBwcmludGYoIiVsbGRcbiIsIGZ6L2ZtKTsgZWxzZSBwcmludGYoIiVsbGQvJWxsZFxuIiwgZnovbiwgZm0vbik7CglyZXR1cm4gMDsKfQ==