#include <bits/stdc++.h>
using namespace std;
int n, m, val[2005];
long long e[2005][2005];
pair<long long, int> p[2][2005];
int ip[2][2005];
long long d[2005];
bool vis[2005];
void solve(int s, pair<long long, int> *v) {
  memset(d, 63, sizeof(d));
  memset(vis, 0, sizeof(vis));
  d[s] = 0;
  for (int i = 1; i <= n; i++) {
    int x = -1;
    for (int j = 1; j <= n; j++)
      if (!vis[j] && (x == -1 || d[j] < d[x])) x = j;
    vis[x] = 1;
    for (int j = 1; j <= n; j++)
      if (!vis[j] && d[j] > d[x] + e[x][j]) d[j] = d[x] + e[x][j];
  }
  for (int i = 1; i <= n; i++) v[i] = make_pair(d[i], i);
  sort(v + 1, v + n + 1);
}
long long f[2005][2005][2];
long long s[2][2005][2005];
int num[2][2005][2005];
long long Mx[2005];
int T[2005];
int main() {
  scanf("%d%d", &n, &m);
  int a, b;
  scanf("%d%d", &a, &b);
  for (int i = 1; i <= n; i++) scanf("%d", &val[i]);
  memset(e, 63, sizeof(e));
  for (int i = 1; i <= m; i++) {
    int u, v, w;
    scanf("%d%d%d", &u, &v, &w);
    e[u][v] = e[v][u] = min(e[u][v], (long long)w);
  }
  solve(a, p[0]);
  solve(b, p[1]);
  for (int i = 0; i < 2; i++)
    for (int j = 1; j <= n; j++) ip[i][p[i][j].second] = j;
  for (int i = 0; i < 2; i++)
    for (int j = 1; j <= n; j++)
      for (int k = 0; k <= n; k++) {
        num[i][j][k] = num[i][j - 1][k] + (ip[i ^ 1][p[i][j].second] > k);
        s[i][j][k] = s[i][j - 1][k] +
                     (ip[i ^ 1][p[i][j].second] <= k ? 0 : val[p[i][j].second]);
      }
  for (int i = 0; i <= n; i++) Mx[i] = -1e18, T[i] = n;
  for (int i = n - 1; i >= 0; i--)
    if (!i || p[0][i].first < p[0][i + 1].first) {
      long long mx = -1e18;
      int t = n;
      for (int j = n - 1; j >= 0; j--)
        if (!j || p[1][j].first < p[1][j + 1].first) {
          while (t > 0 && num[1][t][i] > num[1][j][i]) {
            if (t == n || p[1][t].first < p[1][t + 1].first)
              mx = max(mx, s[1][t][i] - f[i][t][0]);
            t--;
          }
          if (t == n)
            f[i][j][1] = 0;
          else
            f[i][j][1] = mx - s[1][j][i];
          while (T[j] > 0 && num[0][T[j]][j] > num[0][i][j]) {
            if (T[j] == n || p[0][T[j]].first < p[0][T[j] + 1].first)
              Mx[j] = max(Mx[j], s[0][T[j]][j] - f[T[j]][j][1]);
            T[j]--;
          }
          if (T[j] == n)
            f[i][j][0] = 0;
          else
            f[i][j][0] = Mx[j] - s[0][i][j];
        }
    }
  if (f[0][0][0] > 0) puts("Break a heart");
  if (f[0][0][0] < 0) puts("Cry");
  if (f[0][0][0] == 0) puts("Flowers");
  return 0;
}
