//匆忙改的,写的不好,有时间再改下
#include<iostream>
using namespace std;
#include<vector>
#include<cstring>
vector<char> ch1;
vector<int> ch2;
int vst[21] = { 0 };
int toitg(char ch){
return ch - '0';
}
void doubleit(){
int tmp = 0;
int i = ch1.size();
while (i){
int digit = toitg(ch1[--i]);
digit *= 2;
digit += tmp;
ch2.push_back(digit % 10);
tmp = digit / 10;
}
if (tmp)
ch2.push_back(tmp);
}
int main(){
char ch[22];
cin >> ch;
int i = 0;
while (ch[i] != '\0'){
ch1.push_back(ch[i++]);
}
int size1 = ch1.size();
doubleit();
if (size1 != ch2.size()){
cout << "No\n";
while (!ch2.empty()){
cout << ch2.back();
ch2.pop_back();
}
return 0;
}
else{
while (!ch1.empty()){
int tmp = toitg(ch1.back());
int i = 0;
for (i = 0; i < ch2.size(); i++){
if (!vst[i] && ch2[i] == tmp){
vst[i] = 1; break;
}
}
if (i == ch2.size()){
cout << "No\n";
while (!ch2.empty()){
cout << ch2.back();
ch2.pop_back();
}
return 0;
}
ch1.pop_back();
}
cout << "Yes\n";
while (!ch2.empty()){
cout << ch2.back();
ch2.pop_back();
}
}
}