#include <algorithm>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
const int MAX = 2005;
vector<pair<int, int> > adj[MAX];
long long x[MAX], y[MAX], sum[MAX][MAX], dp[2][MAX][MAX];
int cnt[MAX][MAX], p[MAX];
vector<long long> vals;
set<pair<long long, int> > s;
void dij(int x, long long *d)
{
	for (int i = 0; i < MAX; i++)
		d[i] = 1e16;
	d[x] = 0;
	s.insert(make_pair(d[x], x));
	while (!s.empty())
	{
		int v = s.begin()->second;
		s.erase(s.begin());
		for (int i = 0; i < adj[v].size(); i++)
		{
			int u = adj[v][i].first, w = adj[v][i].second;
			if (d[u] > d[v] + w)
			{
				s.erase(make_pair(d[u], u));
				d[u] = d[v] + w;
				s.insert(make_pair(d[u], u));
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(false);
	int n, m;
	cin >> n >> m;
	int s, t;
	cin >> s >> t;
	s--;
	t--;
	for (int i = 0; i < n; i++)
		cin >> p[i];
	for (int i = 0; i < m; i++)
	{
		int u, v, w;
		cin >> u >> v >> w;
		u--;
		v--;
		adj[u].push_back(make_pair(v, w));
		adj[v].push_back(make_pair(u, w));
	}
	dij(s, x);
	dij(t, y);
	for (int i = 0; i < n; i++)
		vals.push_back(x[i]);
	sort(vals.begin(), vals.end());
	vals.resize(unique(vals.begin(), vals.end()) - vals.begin());
	for (int i = 0; i < n; i++)
		x[i] = upper_bound(vals.begin(), vals.end(), x[i]) - vals.begin();
	vals.clear();
	for (int i = 0; i < n; i++)
		vals.push_back(y[i]);
	sort(vals.begin(), vals.end());
	vals.resize(unique(vals.begin(), vals.end()) - vals.begin());
	for (int i = 0; i < n; i++)
	{
		y[i] = upper_bound(vals.begin(), vals.end(), y[i]) - vals.begin();
		sum[x[i]][y[i]] += p[i];
		cnt[x[i]][y[i]]++;
	}
	n++;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
		{
			sum[i][j] += sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
			cnt[i][j] += cnt[i - 1][j] + cnt[i][j - 1] - cnt[i - 1][j - 1];
		}
	for (int i = n - 1; i >= 0; i--)
		for (int j = n - 1; j >= 0; j--)
		{
			if (cnt[i + 1][n] - cnt[i][n] - cnt[i + 1][j] + cnt[i][j] == 0)
				dp[0][i][j] = dp[0][i + 1][j];
			else
				dp[0][i][j] = max(dp[0][i + 1][j], dp[1][i + 1][j]) + sum[i + 1][n] - sum[i][n] - sum[i + 1][j] + sum[i][j];
			if (cnt[n][j + 1] - cnt[n][j] - cnt[i][j + 1] + cnt[i][j] == 0)
				dp[1][i][j] = dp[1][i][j + 1];
			else
				dp[1][i][j] = min(dp[1][i][j + 1], dp[0][i][j + 1]) - sum[n][j + 1] + sum[n][j] + sum[i][j + 1] - sum[i][j];
		}
	if (dp[0][0][0] > 0)
		cout << "Break a heart\n";
	else if (dp[0][0][0] < 0)
		cout << "Cry\n";
	else
		cout << "Flowers\n";
	return 0;
}
