AT_abc394_d [ABC394D] Colorful Bracket Sequence
Description
$ 6 $ 種類の文字、`(`, `)`, `[`, `]`, `` からなる文字列 $ S $ が与えられます。
ここで、文字列 $ T $ は、以下の条件を満たすときカラフル括弧列と呼ばれます。
> 以下の操作を何回か( $ 0 $ 回でも良い)繰り返すことで、 $ T $ を空文字列にできる。
>
> - $ T $ の(連続する)部分文字列であって、`()`, `[]`, `` のいずれかであるようなものが存在するとき、そのうちの $ 1 $ つを選んで削除する。
> - 削除された部分文字列が $ T $ の先頭または末尾であるとき、残りの文字列を新たに $ T $ とする。
> - そうでないとき、削除された前後の文字列を $ 1 $ つに連結し、新たに $ T $ とする。
$ S $ がカラフル括弧列であるか判定してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ S $
Output Format
$ S $ がカラフル括弧列ならば `Yes` を、そうでないならば `No` を出力せよ。
Explanation/Hint
### Sample Explanation 1
$ S= $ `([])()` に対して、次のように操作を繰り返すことで空文字列にすることができます。
- `([])()` の $ 2 $ 文字目から $ 3 $ 文字目までをとった部分文字列 `[]` を削除し、前後を連結する。文字列は新たに `()()` となる。
- `()()` の $ 1 $ 文字目から $ 2 $ 文字目までをとった部分文字列 `()` を削除する。文字列は新たに `()` となる。
- `()` の $ 1 $ 文字目から $ 2 $ 文字目までをとった部分文字列 `` を削除する。文字列は新たに `()` となる。
- `()` の $ 1 $ 文字目から $ 2 $ 文字目までをとった部分文字列 `()` を削除する。文字列は空文字列となる。
よって、 $ S= $ `([])()` はカラフル括弧列であるため、`Yes` を出力します。
### Sample Explanation 2
$ S= $ `([` は `()`, `[]`, `` を部分列として含まないため、 $ 1 $ 回目の操作を行うことができず、特に $ S $ はカラフル括弧列ではありません。よって、`No` を出力します。
### Sample Explanation 3
$ S $ に対して操作を繰り返し、空文字列とすることはできません。
よって、 $ S $ はカラフル括弧列ではないため、`No` を出力します。
### Constraints
- $ S $ は長さ $ 1 $ 以上 $ 2\times 10^5 $ 以下の文字列
- $ S $ は `(`, `)`, `[`, `]`, `` のみからなる。