#CPP2A. 封签配对

封签配对

题意:

封签上写着一个只含 (、)、[、] 的字符串。

合法封签按以下规则定义:

  • 空字符串是合法封签。
  • 若 AA 是合法封签,则 (A) 和 [A] 都是合法封签。
  • 若 AA、BB 都是合法封签,则将它们直接拼接得到的 ABAB 也是合法封签。
  • 除上述规则能够得到的字符串以外,其他字符串都不合法。

例如,([])[] 合法,([)] 不合法,因为两种括号交叉配对了。

请判断给定封签是否合法。

输入格式:

一整行字符串 ss(0≤∣s∣≤2×1050 \le |s| \le 2\times10^5),仅由 (、)、[、] 组成,可以为空行。长度不包含行末换行符。

输出格式:

合法输出 YES,否则输出 NO。

样例:

样例输入1:

([[]])

样例输出1:

YES

样例输入2:

([)]

样例输出2:

NO