#include <bits/stdc++.h>
using namespace std;
void RD(int &x) { scanf("%d", &x); }
void RD(double &x) { scanf("%lf", &x); }
void RD(int &x, int &y) { scanf("%d%d", &x, &y); }
void RD(double &x, double &y) { scanf("%lf%lf", &x, &y); }
void RD(int &x, int &y, int &z) { scanf("%d%d%d", &x, &y, &z); }
void RD(double &x, double &y, double &z) { scanf("%lf%lf%lf", &x, &y, &z); }
void RD(char *s) { scanf("%s", s); }
void PR(int x) { printf("%d\n", x); }
void PR(int x, int y) { printf("%d %d\n", x, y); }
void PR(double x) { printf("%.6lf\n", x); }
void PR(char x) { printf("%c\n", x); }
void PR(char x[]) { printf("%s\n", x); }
void PRI(char x[]) { printf("%s", x); }
char wire[100001];
int main() {
  RD(wire);
  int len = strlen(wire);
  int m = 0, p = 0, i;
  for (i = 0; i < (len); ++i) {
    if (wire[i] == '+') {
      if (i % 2 == 0)
        p++;
      else
        p--;
    } else {
      if (i % 2 == 0)
        m--;
      else
        m++;
    }
  }
  if (p == 0 && m == 0)
    PR("Yes");
  else
    PR("No");
  return 0;
}
