#include <bits/stdc++.h>
using namespace std;
bool viz[2066][2066][2];
long long total = 0;
int ind[2][2066];
long long D[2][2066], DP[2066];
int que[2066 * 1000];
long long value[2066];
long long dp[2066][2066][2];
vector<pair<int, long long> > H[2066];
bool comp1(int i1, int i2) { return D[0][i1] < D[0][i2]; }
bool comp2(int i1, int i2) { return D[1][i1] < D[1][i2]; }
void Bell(int S, int nrn) {
  int i, k = 0;
  for (i = 0; i <= nrn; ++i) DP[i] = ((long long)1 << (long long)55);
  que[++k] = S;
  DP[S] = 0;
  for (i = 1; i <= k; ++i) {
    int nod = que[i], j;
    int N = H[nod].size();
    for (j = 0; j < N; ++j) {
      long long De = H[nod][j].first, C = H[nod][j].second;
      if (DP[De] > DP[nod] + C) {
        DP[De] = DP[nod] + C;
        que[++k] = De;
      }
    }
  }
}
int n;
void REC(int l1, int l2, int X) {
  if (viz[l1][l2][X]) return;
  viz[l1][l2][X] = true;
  if (l1 >= n || l2 >= n) return;
  int j = l1 + 1;
  long long suma = 0;
  while (j <= n && D[X ^ 1][ind[X][j]] <= D[X ^ 1][ind[X ^ 1][l2]] && l2 != 0)
    ++j;
  if (j == n + 1) return;
  int ix = j;
  while (j <= n && D[X][ind[X][j]] == D[X][ind[X][ix]]) {
    if (D[X ^ 1][ind[X][j]] > D[X ^ 1][ind[X ^ 1][l2]] || l2 == 0)
      suma += value[ind[X][j]];
    ++j;
  }
  --j;
  REC(j, l2, X);
  long long val = dp[j][l2][X];
  dp[l1][l2][X] = val + suma;
  REC(l2, j, X ^ 1);
  dp[l1][l2][X] = max(dp[l1][l2][X], suma - dp[l2][j][X ^ 1]);
}
int main() {
  int m, n1, n2, i;
  cin.sync_with_stdio(false);
  cin >> n >> m >> n1 >> n2;
  for (i = 1; i <= n; ++i) {
    cin >> value[i];
    total += (long long)value[i];
  }
  for (i = 1; i <= m; ++i) {
    long long xx, yy, cc;
    cin >> xx >> yy >> cc;
    H[xx].push_back(make_pair(yy, cc));
    H[yy].push_back(make_pair(xx, cc));
  }
  Bell(n1, n);
  for (i = 1; i <= n; ++i) {
    D[0][i] = DP[i];
    ind[0][i] = i;
  }
  Bell(n2, n);
  for (i = 1; i <= n; ++i) {
    D[1][i] = DP[i];
    ind[1][i] = i;
  }
  sort(ind[0] + 1, ind[0] + n + 1, comp1);
  sort(ind[1] + 1, ind[1] + n + 1, comp2);
  REC(0, 0, 0);
  if (dp[0][0][0] == 0) {
    cout << "Flowers" << '\n';
    return 0;
  }
  if (dp[0][0][0] > 0) {
    cout << "Break a heart" << '\n';
    return 0;
  }
  if (dp[0][0][0] < 0) {
    cout << "Cry" << '\n';
    return 0;
  }
  return 0;
}
