#include <bits/stdc++.h>
using namespace std;
const int MAXN = 19;
bool dp[MAXN][MAXN * 9 + 1];//根据题意开个18层,因为我下标从1开始就定19了,每位数都有9种可能
int main() {
string s;cin >> s;
int sum = 0;
for (int i = 0; i < s.size(); i++) sum += (s[i] - '0');
if (sum % 2) {//和为计数染不了色
cout << "No";
return 0;
}
int half = sum / 2;
dp[0][0] = 1; //初始化第一层,只有0种颜色
//bool dp[i][j]表示前i位,颜色种类j是否可达
for (int i = 1; i <= s.size(); ++i)
{
// 将当前字符转换为对应的数字
int tmp = s[i-1] - '0';
//枚举颜色种类j
for (int j = 1; j <= half; ++j)
{
//先继承上一层的状态(不选)
dp[i][j] = dp[i - 1][j];
//看看能否从dp[i - 1][j - tmp]转移过来(选)
if(j >= tmp)dp[i][j] |= dp[i - 1][j - tmp];
}
}
if (dp[s.size()][half]) {
cout << "Yes";
} else {
cout << "No";
}
return 0;
}