#include <bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
const long long INF = 1e18;
struct Edge {
  int to, w;
  Edge(int _to, int _w) {
    to = _to;
    w = _w;
  }
};
vector<Edge> G[N];
long long f[N][N], g[N][N], c[N][N], h[N][N], lo[N], ro[N];
long long d[N], t[N];
int d1[N], d2[N], w[N], l[N], r[N], n, m, x, y, p, q;
bool vis[N];
int dijkstra(int s) {
  for (int i = 1; i <= n; ++i) d[i] = INF, vis[i] = false;
  d[s] = 0;
  while (true) {
    int p = -1;
    for (int i = 1; i <= n; ++i) {
      if (vis[i]) continue;
      if (p == -1 || d[p] > d[i]) p = i;
    }
    if (p == -1) break;
    vis[p] = true;
    for (auto e : G[p]) d[e.to] = min(d[e.to], d[p] + e.w);
  }
  for (int i = 1; i <= n; ++i) t[i] = d[i];
  sort(t + 1, t + 1 + n);
  return unique(t + 1, t + 1 + n) - t - 1;
}
int main() {
  scanf("%d %d %d %d", &n, &m, &x, &y);
  for (int i = 1; i <= n; ++i) scanf("%d", &w[i]);
  for (int i = 0, u, v, w; i < m; ++i) {
    scanf("%d %d %d", &u, &v, &w);
    G[u].push_back(Edge(v, w));
    G[v].push_back(Edge(u, w));
  }
  p = dijkstra(x);
  for (int i = 1; i <= n; ++i) d1[i] = lower_bound(t + 1, t + 1 + p, d[i]) - t;
  q = dijkstra(y);
  for (int i = 1; i <= n; ++i) d2[i] = lower_bound(t + 1, t + 1 + q, d[i]) - t;
  for (int i = 1; i <= n; ++i) {
    for (int j = 0; j < d1[i]; ++j) {
      c[j][d2[i]]++;
      c[j][q + 1]--;
      h[j][d2[i]] += w[i];
      h[j][q + 1] -= w[i];
    }
    for (int j = d1[i]; j <= p; ++j) {
      c[j][0]++;
      c[j][q + 1]--;
      h[j][0] += w[i];
      h[j][q + 1] -= w[i];
    }
  }
  n = p;
  m = q;
  for (int i = 0; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      c[i][j] += c[i][j - 1];
      h[i][j] += h[i][j - 1];
    }
  }
  for (int i = 0; i <= m; ++i) l[i] = n, lo[i] = -INF;
  for (int i = 0; i <= n; ++i) r[i] = m, ro[i] = -INF;
  for (int i = n - 1; i >= 0; --i) {
    for (int j = m - 1; j >= 0; --j) {
      if (c[i][j] == c[n][m]) continue;
      while (c[l[j]][j] > c[i][j]) {
        lo[j] = max(lo[j], h[l[j]][j] - g[l[j]][j]);
        l[j]--;
      }
      f[i][j] = lo[j] - h[i][j];
      while (c[i][r[i]] > c[i][j]) {
        ro[i] = max(ro[i], h[i][r[i]] - f[i][r[i]]);
        r[i]--;
      }
      g[i][j] = ro[i] - h[i][j];
    }
  }
  if (f[0][0] > 0)
    printf("Break a heart\n");
  else if (f[0][0] < 0)
    printf("Cry\n");
  else
    printf("Flowers\n");
}
