#include <stdio.h>
#include <stdint.h>
#include <limits.h>
#include <unistd.h>
#define push(a, b) *a = b; a++
#define pop(a, b) a--; b = *a
const char n[] = {'N', 'O'};
const char y[] = {'Y', 'E', 'S'};
unsigned char arr[100*1024+1] = {};
int main(void)
{
unsigned char * arr_p= &arr[0];
unsigned char tmp;
unsigned char *c = &arr[0];
read(STDIN_FILENO, arr, sizeof(arr));
while (1)
{
switch (*c)
{
case '<':
case '{':
case '[':
case '(':
push (arr_p, *c);
break;
case '>':
case '}':
case ']':
pop (arr_p, tmp);
if (tmp != *c - 2)
{
write(STDOUT_FILENO, n, sizeof(n));
return 0;
}
break;
case ')':
pop (arr_p, tmp);
if (tmp != *c - 1)
{
write(STDOUT_FILENO, n, sizeof(n));
return 0;
}
break;
default:
if ( arr_p != &arr[0] )
write(STDOUT_FILENO, n, sizeof(n));
else
write(STDOUT_FILENO, y, sizeof(y));
return 0;
}
++c;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPGxpbWl0cy5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgojZGVmaW5lIHB1c2goYSwgYikgICphID0gYjsgYSsrCiNkZWZpbmUgcG9wKGEsIGIpICAgYS0tOyBiID0gKmEKCmNvbnN0IGNoYXIgbltdID0geydOJywgJ08nfTsKY29uc3QgY2hhciB5W10gPSB7J1knLCAnRScsICdTJ307Cgp1bnNpZ25lZCBjaGFyIGFyclsxMDAqMTAyNCsxXSA9IHt9OwoKaW50IG1haW4odm9pZCkKewogIHVuc2lnbmVkIGNoYXIgKiBhcnJfcD0gJmFyclswXTsKICB1bnNpZ25lZCBjaGFyIHRtcDsKICB1bnNpZ25lZCBjaGFyICpjID0gJmFyclswXTsKICAKICByZWFkKFNURElOX0ZJTEVOTywgYXJyLCBzaXplb2YoYXJyKSk7CiAgCiAgd2hpbGUgKDEpCiAgewogICAgc3dpdGNoICgqYykKICAgIHsKICAgICAgY2FzZSAnPCc6CiAgICAgIGNhc2UgJ3snOgogICAgICBjYXNlICdbJzoKICAgICAgY2FzZSAnKCc6CiAgICAgICAgcHVzaCAoYXJyX3AsICpjKTsKICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgY2FzZSAnPic6CiAgICAgIGNhc2UgJ30nOgogICAgICBjYXNlICddJzoKICAgICAgICBwb3AgKGFycl9wLCB0bXApOwogICAgICAgIGlmICh0bXAgIT0gKmMgLSAyKQogICAgICAgIHsKICAgICAgICAgIHdyaXRlKFNURE9VVF9GSUxFTk8sIG4sIHNpemVvZihuKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgIGNhc2UgJyknOgogICAgICAgIHBvcCAoYXJyX3AsIHRtcCk7CiAgICAgICAgaWYgKHRtcCAhPSAqYyAtIDEpCiAgICAgICAgewogICAgICAgICAgd3JpdGUoU1RET1VUX0ZJTEVOTywgbiwgc2l6ZW9mKG4pKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgICAKICAgICAgZGVmYXVsdDoKICAgICAgICBpZiAoIGFycl9wICE9ICZhcnJbMF0gKQogICAgICAgICAgd3JpdGUoU1RET1VUX0ZJTEVOTywgbiwgc2l6ZW9mKG4pKTsKICAgICAgICBlbHNlCiAgICAgICAgICB3cml0ZShTVERPVVRfRklMRU5PLCB5LCBzaXplb2YoeSkpOwogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgICsrYzsKICB9CiAgcmV0dXJuIDA7Cn0=