using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("3 3 2 2 3");
//Yes
}
else if (InputPattern == "Input2") {
WillReturn.Add("3 3 4 4 1");
//No
}
else if (InputPattern == "Input3") {
WillReturn.Add("1000000000 1000000000 1000000000000000000 1000000000000000000 1000000000000000000");
//No
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
long[] wkArr = InputList[0].Split(' ').Select(pX => long.Parse(pX)).ToArray();
long X = wkArr[0];
long Y = wkArr[1];
long A = wkArr[2];
long B = wkArr[3];
long C = wkArr[4];
bool CanSet = false;
for (int I = 1; I <= 2; I++) {
if (I == 2) {
long tmp = X;
X = Y;
Y = tmp;
}
CanSet = CanSet || DeriveCanSet(X, Y, A, B, C);
CanSet = CanSet || DeriveCanSet(X, Y, A, C, B);
CanSet = CanSet || DeriveCanSet(X, Y, B, A, C);
CanSet = CanSet || DeriveCanSet(X, Y, B, C, A);
CanSet = CanSet || DeriveCanSet(X, Y, C, A, B);
CanSet = CanSet || DeriveCanSet(X, Y, C, B, A);
}
Console.WriteLine(CanSet ? "Yes" : "No");
}
static bool DeriveCanSet(long pYoko, long pTate, long pA, long pB, long pC)
{
// Aは、縦に置く
long NeedYoko1 = pA / pTate;
if (pA % pTate > 0) NeedYoko1++;
// Aが置けなかったらNG
long RestYoko = pYoko - NeedYoko1;
if (RestYoko <= 0) return false;
// BとCを縦に置く場合
long NeedYoko2 = pB / pTate;
if (pB % pTate > 0) NeedYoko2++;
long NeedYoko3 = pC / pTate;
if (pC % pTate > 0) NeedYoko3++;
if (NeedYoko1 + NeedYoko2 + NeedYoko3 <= pYoko) {
return true;
}
// BとCを横に置く場合
long NeedTate1 = pB / RestYoko;
if (pB % RestYoko > 0) NeedTate1++;
long NeedTate2 = pC / RestYoko;
if (pC % RestYoko > 0) NeedTate2++;
if (NeedTate1 + NeedTate2 <= pTate) {
return true;
}
return false;
}
}