#include <bits/stdc++.h>
using namespace std;
#define Foreach(i, c) for(__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)
#define For(i,a,b) for(int (i)=(a);(i) < (b); ++(i))
#define rof(i,a,b) for(int (i)=(a);(i) > (b); --(i))
#define rep(i, c)  for(auto &(i) : (c))
#define x     first
#define y     second
#define pb  push_back
#define pb  pop_back()
#define iOS  ios_base::sync_with_stdio(false)
#define sqr(a)  (((a) * (a)))
#define all(a)  a.begin() , a.end()
#define error(x) cerr << #x << " = " << (x) <<endl
#define Error(a,b) cerr<<"( "<<#a<<" , "<<#b<<" ) = ( "<<(a)<<" , "<<(b)<<" )\n";
#define errop(a) cerr<<#a<<" = ( "<<((a).x)<<" , "<<((a).y)<<" )\n";
#define coud(a,b) cout<<fixed << setprecision((b)) << (a)
#define L(x)  ((x)<<1)
#define R(x)  (((x)<<1)+1)
#define umap  unordered_map
//#define max(x,y)  ((x) > (y) ? (x) : (y))
#define double long double
typedef long long ll;
typedef pair<int,int>pii;
typedef vector<int> vi;
typedef pair<long long,long long> PLL;
# define FF x
# define SS y
typedef ll LL;
# define PB push_back
# define MP make_pair
//typedef complex<double> point;
const int MAX_N=2000+5;
const int MAX_E=100*1000+5;
vector<PLL> adj[MAX_N],A,B;
LL N,E,K,PA,PB,P[MAX_N],Sum[MAX_N][MAX_N];
int SZ[MAX_N][MAX_N],SZA,SZB;
vector<LL> DA,DB;
LL ALLSUM,Ans;

PLL QA[MAX_N][2],QB[MAX_N][2];

bool mrk[MAX_N];
LL D[MAX_N];
void Dijstkra(int s,vector<PLL> &V,vector<LL> &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.PB(PLL(D[mn],mn));
		H.PB(D[mn]);
		for(int i=0;i<(int)adj[mn].size();i++){
			int v=adj[mn][i].FF;
			if(mrk[v])continue;
			D[v]=min(D[v],D[mn]+adj[mn][i].SS);
		}
	}

}
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]=MP(0LL,0LL);
		QA[i][1]=MP(0LL,0LL);
		QB[i][0]=MP(0LL,0LL);
		QB[i][1]=MP(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(PB,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));
	LL AnsA=ALLSUM,P1=0,SizeA=N;
	for(int i=0;i<SZA;i++){
		while(P1<(int)A.size() && A[P1].FF<DA[i]){
			AnsA-=P[A[P1].SS];
			mrk[A[P1].SS]=true;
			SizeA--;
			P1++;
		}
		LL P2=0,AnsB=AnsA,SizeB=SizeA;
		for(int j=0;j<SZB;j++){
			while(P2<(int)B.size() && B[P2].FF<DB[j]){
				if(!mrk[B[P2].SS])
					AnsB-=P[B[P2].SS],
						SizeB--;
				P2++;
			}
			Sum[i][j]=AnsB;
			SZ[i][j]=SizeB;
		}
	}	
}
int main(){
	CLR();
	scanf("%lld%lld",&N,&E);
	scanf("%lld%lld",&PA,&PB);
	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].PB(PLL(v,w));
		adj[v].PB(PLL(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){

					LL TMP;
					if(SZ[i][j]<=QA[j][0].FF)
						TMP=QA[j][1].SS;
					else
						TMP=QA[j][0].SS;
					LL DUMMY=TMP+Sum[i][j];	
					if(SZ[i][j]==QB[i][0].FF)
						QB[i][0].SS=max(QB[i][0].SS,-DUMMY);
					else{
						QB[i][0].SS=max(QB[i][0].SS,QB[i][1].SS);
						QB[i][1]=QB[i][0];
						QB[i][0]=MP(SZ[i][j],-DUMMY);
						QB[i][0].SS=max(QB[i][0].SS,QB[i][1].SS);
					}
					if(!i && !j)
						Ans=DUMMY;
				}
				else{
					LL TMP;
					if(SZ[i][j]<=QB[i][0].FF)
						TMP=QB[i][1].SS;
					else
						TMP=QB[i][0].SS;
					LL DUMMY=TMP+Sum[i][j];
					if(SZ[i][j]==QA[j][0].FF)
						QA[j][0].SS=max(QA[j][0].SS,-DUMMY);
					else{	
						QA[j][0].SS=max(QA[j][0].SS,QA[j][1].SS);
						QA[j][1]=QA[j][0];
						QA[j][0]=MP(SZ[i][j],-DUMMY);
						QA[j][0].SS=max(QA[j][0].SS,QA[j][1].SS);
					}
				}
			}
	if(2*Ans > ALLSUM)
		cout<< "Break a heart" <<endl;
	else if(2*Ans == ALLSUM)
		cout<< "Flowers" <<endl;
	else
		cout<< "Cry" <<endl;	
	return 0;
}
