#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
typedef struct _INFO
{
char s;
struct _INFO* next;
}INFO;
typedef INFO* STACK;
int Push(STACK* stack, char s)
{
INFO* temp = (INFO*)malloc(sizeof(INFO));
temp->s = s;
if (!temp) return 1;
if (!*stack)
temp->next = NULL;
else
temp->next = *stack;
*stack = temp;
return 0;
}
int Pop(STACK* stack, char* s)
{
if (!*stack) return 1;
INFO* temp = *stack;
*s = temp->s;
*stack = temp->next;
free(temp);
return 0;
}
int main (void)
{
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
char str[1024];
char *estr;
while (1)
{
estr = fgets (str,sizeof(str),stdin);
if (estr == NULL)
{
if ( feof (stdin) != 0)
{
break;
}
}
STACK head = NULL;
bool flag = true;
char * sp = & (str[0]);
char s, s_1;
while ( ( * sp ) != '\n' )
{
char s = ( * sp ) ;
if (s == '(' || s == '{' || s == '[')
{
Push(&head, s);
}
if (s == ')' || s == '}' || s == ']')
{
if (!head) { flag = false; break; }
if (head->s == '(' && s == ')') Pop(&head, &s_1);
else if (head->s == '[' && s == ']') Pop(&head, &s_1);
else if (head->s == '{' && s == '}') Pop(&head, &s_1);
}
++ sp ;
}
if (!head && flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxsb2NhbGUuaD4KCgp0eXBlZGVmIHN0cnVjdCBfSU5GTwp7CiAgICBjaGFyIHM7CiAgICBzdHJ1Y3QgX0lORk8qIG5leHQ7Cn1JTkZPOwp0eXBlZGVmIElORk8qIFNUQUNLOwoKaW50IFB1c2goU1RBQ0sqIHN0YWNrLCBjaGFyIHMpCnsKICAgIElORk8qIHRlbXAgPSAoSU5GTyopbWFsbG9jKHNpemVvZihJTkZPKSk7CiAgICB0ZW1wLT5zID0gczsKICAgIGlmICghdGVtcCkgcmV0dXJuIDE7CiAgICBpZiAoISpzdGFjaykKICAgICAgICB0ZW1wLT5uZXh0ID0gTlVMTDsKICAgIGVsc2UKICAgICAgICB0ZW1wLT5uZXh0ID0gKnN0YWNrOwogICAgKnN0YWNrID0gdGVtcDsKICAgIHJldHVybiAwOwp9CmludCBQb3AoU1RBQ0sqIHN0YWNrLCBjaGFyKiBzKQp7CiAgICBpZiAoISpzdGFjaykgcmV0dXJuIDE7CiAgICBJTkZPKiB0ZW1wID0gKnN0YWNrOwogICAgKnMgPSB0ZW1wLT5zOwogICAgKnN0YWNrID0gdGVtcC0+bmV4dDsKICAgIGZyZWUodGVtcCk7CiAgICByZXR1cm4gMDsKCn0KCmludCBtYWluICh2b2lkKQp7ICAKLy8gICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKLy8gICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICBjaGFyIHN0clsxMDI0XTsKCgogICBjaGFyICplc3RyOwoKCgoKCgoKCiAgIHdoaWxlICgxKQogICB7CiAgICAgIGVzdHIgPSBmZ2V0cyAoc3RyLHNpemVvZihzdHIpLHN0ZGluKTsKICAgICAgaWYgKGVzdHIgPT0gTlVMTCkKICAgICAgeyAgICAgICAgIAogICAgICAgICBpZiAoIGZlb2YgKHN0ZGluKSAhPSAwKQogICAgICAgICB7ICAKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CgoKICAgICAgfQoKICAgICAgICAgIFNUQUNLIGhlYWQgPSBOVUxMOwogICAgYm9vbCBmbGFnID0gdHJ1ZTsKICAgIGNoYXIgKiBzcCA9ICYgKHN0clswXSk7CgogICBjaGFyIHMsIHNfMTsKICAgd2hpbGUgKCAoICogc3AgKSAhPSAnXG4nICkKICAgIHsKICAgICAgICBjaGFyIHMgPSAoICogc3AgKSA7CiAgICAgICAgaWYgKHMgPT0gJygnIHx8IHMgPT0gJ3snIHx8IHMgPT0gJ1snKQogICAgICAgIHsKICAgICAgICAgICAgUHVzaCgmaGVhZCwgcyk7CiAgICAgICAgfQogICAgICAgIGlmIChzID09ICcpJyB8fCBzID09ICd9JyB8fCBzID09ICddJykKICAgICAgICB7CiAgICAgICAgICAgIGlmICghaGVhZCkgeyBmbGFnID0gZmFsc2U7IGJyZWFrOyB9CgogICAgICAgICAgICBpZiAoaGVhZC0+cyA9PSAnKCcgJiYgcyA9PSAnKScpIFBvcCgmaGVhZCwgJnNfMSk7CiAgICAgICAgICAgIGVsc2UgaWYgKGhlYWQtPnMgPT0gJ1snICYmIHMgPT0gJ10nKSBQb3AoJmhlYWQsICZzXzEpOwogICAgICAgICAgICBlbHNlIGlmIChoZWFkLT5zID09ICd7JyAmJiBzID09ICd9JykgUG9wKCZoZWFkLCAmc18xKTsKCiAgICAgICB9CiAgICAgICArKyBzcCA7CiAgICB9CiAgICBpZiAoIWhlYWQgJiYgZmxhZykKICAgICAgICBwcmludGYoIllFU1xuIik7CiAgICBlbHNlCiAgICAgICAgcHJpbnRmKCJOT1xuIik7CgoKICAgfQoKCgogICByZXR1cm4gMDsKfSAKCg==