#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; template using vc = vector; template using vvc = vc>; using pi = pair; using vi = vc; using vvi = vvc; #define rep(i,a,b) for (int i = a; i < b; i++) #define irep(i,a,b) for (int i = a; i > b; i--) #define print(n) cout << n << endl #define rup(a,b) (a+b-1)/b int main(){ cout << fixed << setprecision(15); int N; string S; cin>>N>>S; ll mod = 998244353; vvc dp(N,vc(N,0)); int now = 1; dp[0][1] ++; dp[0][0] ++; rep(i,0,N-1){ if (S[i+1]=='('){ rep(j,0,now+1){ dp[i+1][j] += dp[i][j]; dp[i+1][j] %= mod; dp[i+1][j+1] += dp[i][j]; dp[i+1][j+1] %= mod; } now ++; }else{ rep(j,0,now+1){ if (j!=0){ dp[i+1][j-1] += dp[i][j]; dp[i+1][j-1] %= mod; } if(j!=now){ dp[i+1][j] += dp[i][j]; dp[i+1][j] %= mod; } } now --; } } print(dp[N-1][0]); //system("pause"); return 0; }