#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 2000 + 5;
const int MAX_E = 100 * 1000 + 5;
vector<pair<long long, long long> > adj[MAX_N], A, B;
long long N, E, K, PA, push_back, P[MAX_N], Sum[MAX_N][MAX_N];
int SZ[MAX_N][MAX_N], SZA, SZB;
vector<long long> DA, DB;
long long ALLSUM, Ans;
pair<long long, long long> QA[MAX_N][2], QB[MAX_N][2];
bool mrk[MAX_N];
long long D[MAX_N];
void Dijstkra(int s, vector<pair<long long, long long> > &V,
              vector<long long> &H) {
  D[s] = 0;
  for (int tmp = 0; tmp < N; tmp++) {
    int mn = -1;
    for (int i = 1; i <= N; i++)
      if (!mrk[i] && (mn == -1 || D[mn] > D[i])) mn = i;
    mrk[mn] = true;
    V.push_back(pair<long long, long long>(D[mn], mn));
    H.push_back(D[mn]);
    for (int i = 0; i < (int)adj[mn].size(); i++) {
      int v = adj[mn][i].first;
      if (mrk[v]) continue;
      D[v] = min(D[v], D[mn] + adj[mn][i].second);
    }
  }
}
void CLR() {
  A.clear(), B.clear();
  DA.clear(), DB.clear();
  Ans = 0;
  ALLSUM = 0;
  for (int i = 0; i < MAX_N; i++) {
    adj[i].clear();
    P[i] = 0;
    QA[i][0] = make_pair(0LL, 0LL);
    QA[i][1] = make_pair(0LL, 0LL);
    QB[i][0] = make_pair(0LL, 0LL);
    QB[i][1] = make_pair(0LL, 0ll);
    for (int j = 0; j < MAX_N; j++) Sum[i][j] = 0, SZ[i][j] = 0;
  }
}
void FillSum() {
  memset(mrk, 0, sizeof(mrk));
  memset(D, 63, sizeof(D));
  Dijstkra(PA, A, DA);
  memset(mrk, 0, sizeof(mrk));
  memset(D, 63, sizeof(D));
  Dijstkra(push_back, B, DB);
  sort(DA.begin(), DA.end());
  DA.resize(unique(DA.begin(), DA.end()) - DA.begin());
  sort(DB.begin(), DB.end());
  DB.resize(unique(DB.begin(), DB.end()) - DB.begin());
  SZA = (int)DA.size();
  SZB = (int)DB.size();
  memset(mrk, 0, sizeof(mrk));
  long long AnsA = ALLSUM, P1 = 0, SizeA = N;
  for (int i = 0; i < SZA; i++) {
    while (P1 < (int)A.size() && A[P1].first < DA[i]) {
      AnsA -= P[A[P1].second];
      mrk[A[P1].second] = true;
      SizeA--;
      P1++;
    }
    long long P2 = 0, AnsB = AnsA, SizeB = SizeA;
    for (int j = 0; j < SZB; j++) {
      while (P2 < (int)B.size() && B[P2].first < DB[j]) {
        if (!mrk[B[P2].second]) AnsB -= P[B[P2].second], SizeB--;
        P2++;
      }
      Sum[i][j] = AnsB;
      SZ[i][j] = SizeB;
    }
  }
}
int main() {
  CLR();
  scanf("%lld%lld", &N, &E);
  scanf("%lld%lld", &PA, &push_back);
  for (int i = 1; i <= N; i++) scanf("%lld", P + i), ALLSUM += P[i];
  for (int i = 0; i < E; i++) {
    int u, v, w;
    scanf("%d%d%d", &u, &v, &w);
    adj[u].push_back(pair<long long, long long>(v, w));
    adj[v].push_back(pair<long long, long long>(u, w));
  }
  FillSum();
  for (int i = SZA; i >= 0; i--)
    for (int j = SZB; j >= 0; j--)
      for (int k = 0; k < 2; k++) {
        if (!SZ[i][j]) continue;
        if (!k) {
          long long TMP;
          if (SZ[i][j] <= QA[j][0].first)
            TMP = QA[j][1].second;
          else
            TMP = QA[j][0].second;
          long long DUMMY = TMP + Sum[i][j];
          if (SZ[i][j] == QB[i][0].first)
            QB[i][0].second = max(QB[i][0].second, -DUMMY);
          else {
            QB[i][0].second = max(QB[i][0].second, QB[i][1].second);
            QB[i][1] = QB[i][0];
            QB[i][0] = make_pair(SZ[i][j], -DUMMY);
            QB[i][0].second = max(QB[i][0].second, QB[i][1].second);
          }
          if (!i && !j) Ans = DUMMY;
        } else {
          long long TMP;
          if (SZ[i][j] <= QB[i][0].first)
            TMP = QB[i][1].second;
          else
            TMP = QB[i][0].second;
          long long DUMMY = TMP + Sum[i][j];
          if (SZ[i][j] == QA[j][0].first)
            QA[j][0].second = max(QA[j][0].second, -DUMMY);
          else {
            QA[j][0].second = max(QA[j][0].second, QA[j][1].second);
            QA[j][1] = QA[j][0];
            QA[j][0] = make_pair(SZ[i][j], -DUMMY);
            QA[j][0].second = max(QA[j][0].second, QA[j][1].second);
          }
        }
      }
  if (2 * Ans > ALLSUM)
    cout << "Break a heart" << endl;
  else if (2 * Ans == ALLSUM)
    cout << "Flowers" << endl;
  else
    cout << "Cry" << endl;
  return 0;
}
