from itertools import accumulate MOD = 998244353 N = int(input()) S = input() lparens = [] for c in S: v = 1 if c == '(' else -1 lparens.append(v) acc_lparens = list(accumulate(lparens)) ns = len(S) dp = [[0] * (ns+1) for _ in range(ns+1)] dp[0][0] = 1 for i, c in enumerate(S): pp = [[0] * (ns+1) for _ in range(ns+1)] dp, pp = pp, dp lcnt = acc_lparens[i] + 2 # print(f'{i=} {lcnt=}') if c == '(': # 赤を増やす for j in range(ns): if j == lcnt: break for k in range(ns): if j+k == lcnt: break dp[j+1][k] += pp[j][k] dp[j+1][k] %= MOD # 青を増やす for j in range(ns): if j == lcnt: break for k in range(ns): if j+k == lcnt: break dp[j][k+1] += pp[j][k] dp[j][k+1] %= MOD elif c == ')': # 赤を減らす for j in range(ns): if j == lcnt: break for k in range(ns): if j+k == lcnt: break if j == 0: continue dp[j-1][k] += pp[j][k] dp[j-1][k] %= MOD # 青を減らす for j in range(ns): if j == lcnt: break for k in range(ns): if j+k == lcnt: break if k == 0: continue dp[j][k-1] += pp[j][k] dp[j][k-1] %= MOD ans = dp[0][0] print(ans)