#### Registered Users Only

Please login to utilize this feature.

Do note that this website only supports submissions in C++.

## Problem Description

Given a bracket sequence of length *L*, you are to determine if it is valid!

A valid bracket sequence is defined *recursively* as:

- ""
*or* - (
*x*) where*x*is a valid bracket sequence,*or* *xy*, where*x*and*y*are valid bracket sequences.

However, two other pairs of brackets can be found in the bracket sequence, '[' which is to be matched with ']' and '{' which is to be matched with '}'.

## Limits

For all tests: each character will be one of the following: '(', ')', '[', ']', '{', '}'.

Subtask 1 (10%): 1 ≤ L ≤ 4.

Subtask 2 (30%): 1 ≤ L ≤ 1000.

Subtask 3 (20%): 1 ≤ L ≤ 100000. However, each character will be either '(' or ')'.

Subtask 4 (40%): 1 ≤ L ≤ 100000.

Subtask 5 (0%): Sample Testcases.

## Input

The first line of input will contain one integer, *L*.

The second line of input will contain one string, the bracket sequence.

## Output

The output should contain one string, either "Valid" or "Invalid".

## Sample Testcase 1

### Input

6 ([]{})

### Output

Valid

## Sample Testcase 2

### Input

8 (())((()

### Output

Invalid

## Sample Testcase 3

### Input

6 ([}{])

### Output

Invalid

### Tags

### Subtasks and Limits

Subtask | Score | #TC | Time | Memory | Scoring |
---|---|---|---|---|---|

1 | 10 | 26 | 1s | 64MB | Minimum |

2 | 30 | 51 | 1s | 64MB | Minimum |

3 | 20 | 25 | 1s | 64MB | Minimum |

4 | 40 | 140 | 1s | 64MB | Minimum |

5 | 0 | 3 | 1s | 64MB | Minimum |

### Judge Compile Command

g++-7 ans.cpp -o bracket_ex -Wall -static -O2 -lm -m64 -s -w -std=gnu++17 -fmax-errors=512