#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <limits.h>

int E,V,s,t;
struct edge { int u, v, c; };
struct edge edges[10010];
int d[6000];
bool chgt;

void relax(struct edge *e) {
	int tmp = d[e->u] + e->c;
	if (tmp < d[e->v]) {
		d[e->v] = tmp;
		if (e->v == t) chgt = 1;
	}
}

int main() {
	while (true) {
		scanf("%d %d %d %d", &E, &V, &s, &t);
		if (V == 0) break;
		int i,j;
		for (i=0; i<V; i++) d[i] = INT_MAX;
		d[s] = 0;
		for (i=0; i<E; i++) {
			double tmp;
			scanf("%d %d %lf", &edges[i].u, &edges[i].v, &tmp);
			edges[i].c = - (int)(tmp*1000);
		}
		for (i=0; i<V*10; i++) {
			chgt = 0;
			for (j=0; j<E; j++) relax(edges+j);
		}
		if (chgt) printf("TRUE\n");
		else printf("FALSE\n");
	}
	return 0;
}