#include <bits/stdc++.h>
using namespace std;
int check(string second) {
  int i, l;
  l = second.length();
  for (i = 0; i < l / 2; i++) {
    if (second[i] != second[l - 1 - i]) return 0;
  }
  return 1;
}
int GCD(int a, int b) { return b ? GCD(b, a % b) : a; }
long long POW(long long Base, long long Exp) {
  long long y, ret = 1;
  y = Base;
  while (Exp) {
    if (Exp & 1) ret = (ret * y);
    y = (y * y);
    Exp /= 2;
  }
  return ret;
}
int clusters = 1;
int x[4] = {1, -1, 0, 0};
int y[4] = {0, 0, 1, -1};
vector<int> A;
int main() {
  string str;
  cin >> str;
  int i, len;
  len = str.length();
  stack<char> st;
  for (i = 0; i < len; i++) {
    if (!st.size() || st.top() != str[i])
      st.push(str[i]);
    else
      st.pop();
  }
  if (!st.size())
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
