#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-9;
static const double PI = acos(-1.0);
inline int lowbit(int x) { return x & (-x); }
inline int mgcd(int x, int y) { return y ? mgcd(y, x % y) : x; }
inline bool in(int p, pair<int, int> r) {
  return p >= r.first && p <= r.second;
}
inline bool in(pair<int, int> r1, pair<int, int> r2) {
  return r1.first >= r2.first && r1.second <= r2.second;
}
inline int mid(pair<int, int> rg) { return (((rg.first) + (rg.second)) >> 1); }
pair<int, int> shift(bool d, pair<int, int> rg) {
  return d ? pair<int, int>(mid(rg) + 1, rg.second)
           : pair<int, int>(rg.first, mid(rg));
}
char str[100005];
int k = 0, l;
int main() {
  scanf("%s", str);
  l = strlen(str);
  if (l & 1) {
    printf("No\n");
    return 0;
  }
  for (int i = 0; i < (int)(l); i++) {
    if (str[i] == '+')
      k = -k;
    else
      k = -k + 1;
  }
  if (k == 0)
    printf("Yes\n");
  else
    printf("No\n");
  return 0;
}
