human
Can you provide a Python program to determine if it is possible to obtain an RBS after these replacements given the following:
A bracket sequence is called regular if it is possible to obtain correct arithmetic expression by inserting characters + and 1 into this sequence. For example, sequences (())(), () and (()(())) are regular, while )(, (() and (()))( are not. Let's call a regular bracket sequence "RBS".

You are given a sequence s of n characters (, ), and/or ?. There is exactly one character ( and exactly one character ) in this sequence.

You have to replace every character ? with either ) or ( (different characters ? can be replaced with different brackets). You cannot reorder the characters, remove them, insert other characters, and each ? must be replaced.

Determine if it is possible to obtain an RBS after these replacements.

Input

The first line contains one integer t (1 ≤ t ≤ 1000) — the number of test cases.

Each test case consists of one line containing s (2 ≤ |s| ≤ 100) — a sequence of characters (, ), and/or ?. There is exactly one character ( and exactly one character ) in this sequence.

Output

For each test case, print YES if it is possible to obtain a regular bracket sequence, or NO otherwise}. 

You may print each letter in any case (for example, YES, Yes, yes, yEs will all be recognized as positive answer).

Example

Input

5
()
(?)
(??)
??()
)?(?

Output

YES
NO
YES
YES
NO

Note

In the first test case, the sequence is already an RBS.

In the third test case, you can obtain an RBS as follows: ()() or (()).

In the fourth test case, you can obtain an RBS as follows: ()().
assistant
#Here is Python program to determine if it is possible to obtain an RBS after these replacements.

# import functools
#
# k = int(input())
# cache = [-1] * (k + 1)
# @functools.lru_cache()
# def phib(k):
#     if k <= 1:
#         return 1
#     return phib(k - 1) + phib(k - 2)
#
# def f(k):
#     if k <= 1:
#         return 1
#     if cache[k] != -1:
#         return cache[k]
#     cache[k] = f(k - 1) + f(k - 2)
#     return cache[k]
##
# print(f(k))
# print(phib(k))

# t = int(input())
# for _ in range(t):
#     n = int(input())
#     arr = list(map(int, input().split()))
#     arr_set = set(arr)
#     occasions = {}
#     arr_listset = [i for i in arr_set] # list(arr_set)
#     s = len(arr_listset)
#     for i in range(n):
#         occasions[arr[i]] = occasions.get(arr[i], -1) + 1
#     for i in range(len(arr_listset)):
#         arr_listset[i] += 1
#         if len(set(arr_listset)) < len(arr_set):
#             arr_listset[i] -= 1
#         else:
#             if occasions[arr_listset[i] - 1] > 0:
#                 s += 1
#     print(s)

# t = int(input())
# for _ in range(t):
#     n = int(input())
#     arr = list(map(int, input().split()))
#     dp = [[0 for i in range(n + 1)] for _ in range(n + 1)]
#     for i in range(n + 1):
#         for j in range(n + 1):
#             if

def solve():
    word = str(input())
    if len(word) % 2 != 0:
        print('no')
        return
    s, qs = 0, 0
    for i in range(len(word)):
        if word[i] == '(':
            s += 1
        elif word[i] == ')':
            s -= 1
        else:
            qs += 1
        if s < 0 and qs < abs(s):
            print('no')
            return
    s, qs = 0, 0
    for i in range(len(word) - 1, -1, -1):
        if word[i] == '(':
            s -= 1
        elif word[i] == ')':
            s += 1
        else:
            qs += 1
        if s < 0 and qs < abs(s):
            print('no')
            return
    print('yes')

t = int(input())
while t:
    t -= 1
    solve()
#

# using namespace std;
#
# void solve(){
#     string s; cin >> s;
#     if(s.size() % 2){
#         cout << "NO" << endl;
#         return;
#    ...