#include<stdio.h>
#include<string.h>
#include<stdbool.h>
#define MAXSIZE 20
typedef struct {
int num[MAXSIZE];
int top;
}stack;
void init(stack* S);
void Push(stack* S);
void Pop(stack* S);
bool isempty(stack S);
int main(void)
{
stack s;
char ar[256];
init(&s);
scanf("%s", ar);
for (int i = 0; i < strlen(ar); i++)
{
if (ar[i] == '(')
Push(&s);
else if (ar[i] == ')')
Pop(&s);
}
if (isempty(s))
printf("YES");
else
printf("NO");
return 0;
}
void init(stack* S)
{
for (int i = 0; i < MAXSIZE; i++)
S->num[i] = 0;
S->top = -1;
}
void Push(stack* S)
{
S->num[++S->top] = 1;
}
void Pop(stack* S)
{
S->num[S->top--] = 0;
}
bool isempty(stack S)
{
if (S.top == -1)
return 1;
else
return 0;
}