#include<iostream>
#include<string>
// #include<vector>
using namespace std;
string find_five(string str);
int main() {
string a, b, max_five;
cin >> a >> b;
int flag = 1; // 标志辅助变量
switch (b.length()) {
case 1:
if ((*(a.rbegin()) - '0') > stoi(b)) {
cout << "YES";
} else {
cout << "NO";
}
break;
case 2:
for (int i = a.length() - 1; i > 0; i--) {
if (a[i] == a[i - 1] && a[i] > b[0]) {
printf("YES");
flag = 0;
break;
}
}
if (flag) {
printf("NO");
}
break;
case 3:
for (int i = a.length() - 1; i > 1; i--) {
if (a[i] == a[i - 1] && a[i - 1] == a[i - 2] && a[i] > b[0]) {
printf("YES");
flag = 0;
break;
}
}
if (flag) {
printf("NO");
}
break;
case 4:
for (int i = a.length() - 1; i > 2; i--) {
if (a[i] == a[i - 1] && a[i - 1] == a[i - 2] && a[i - 2] == a[i - 3] &&
a[i] > b[0]) {
printf("YES");
flag = 0;
break;
}
}
if (flag) {
printf("NO");
}
break;
case 5:
if(b == "56789"){
printf("NO");
}else{
// 先找出手中最大的五张
max_five = find_five(a);
if(max_five > b){
printf("YES");
}else{
printf("NO");
}
}
break;
default:
cout << "error!";
break;
}
return 0;
}
string find_five(string str){
int index = 0;
string num, max_five; // num记录 牌a有哪几种数字
num = str.substr(0, 1);
for(int i = 1; i < str.length(); i++){
if(str[i] != str[index]){
index = i;
num.push_back(str[i]);
}
}
for(int i = num.length() - 4; i > 0; i--){
string wuzhang = num.substr(num.length() - 5, 5);
if(wuzhang == "56789"){
max_five = wuzhang;
break;
}else if(wuzhang == "45678"){
max_five = wuzhang;
break;
}else if(wuzhang == "34567"){
max_five = wuzhang;
break;
}else if(wuzhang == "23456"){
max_five = wuzhang;
break;
}else if(wuzhang == "12345"){
max_five = wuzhang;
break;
}
}
// cout << max_five << endl;
return max_five;
}