#include <bits/stdc++.h>
using namespace std;
const int64_t MOD = 998244353;
void add(int64_t& a, int64_t b) { a = (a + b) % MOD; }
void mul(int64_t& a, int64_t b) { a = a * b % MOD; }
vector<int64_t> fact, seq_inv, fact_inv;
void create_fact_mod(int num) {
  fact[0] = fact[1] = 1;
  for (int i = 2; i <= num; i++) fact[i] = fact[i - 1] * i % MOD;
}
void create_seq_inv_mod(int num) {
  seq_inv[0] = seq_inv[1] = 1;
  for (int i = 2; i <= num; i++)
    seq_inv[i] = (MOD - MOD / i) * seq_inv[MOD % i] % MOD;
}
void create_fact_inv_mod(int num) {
  fact_inv[0] = fact_inv[1] = 1;
  for (int i = 2; i <= num; i++)
    fact_inv[i] = fact_inv[i - 1] * seq_inv[i] % MOD;
}
void create_mod_tables(int num) {
  fact.resize(num + 1);
  seq_inv.resize(num + 1);
  fact_inv.resize(num + 1);
  create_fact_mod(num);
  create_seq_inv_mod(num);
  create_fact_inv_mod(num);
}
int64_t comb_mod(int n, int k) {
  if (n < 0 || k < 0 || n - k < 0) return 0;
  return fact[n] * fact_inv[n - k] % MOD * fact_inv[k] % MOD;
}
int64_t perm_mod(int n, int k) { return fact[n] * fact_inv[n - k] % MOD; }
int64_t power_mod(int64_t num, int64_t power) {
  int64_t prod = 1;
  num %= MOD;
  while (power > 0) {
    if (power & 1) prod = prod * num % MOD;
    num = num * num % MOD;
    power >>= 1;
  }
  return prod;
}
int64_t extgcd(int64_t a, int64_t b, int64_t& x, int64_t& y) {
  int64_t d = a;
  if (b != 0) {
    d = extgcd(b, a % b, y, x);
    y -= (a / b) * x;
  } else {
    x = 1;
    y = 0;
  }
  return d;
}
int64_t inv_mod(int64_t a) {
  int64_t x, y;
  extgcd(a, MOD, x, y);
  return (MOD + x % MOD) % MOD;
}
int main() {
  string str;
  cin >> str;
  int N = str.size();
  vector<int> S(N);
  string ORDER = "()?";
  for (int i = 0; i < N; i++) S[i] = ORDER.find(str[i]);
  create_mod_tables(N);
  vector<vector<int>> sum(N + 1, vector<int>(3));
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < 3; j++) sum[i + 1][j] += sum[i][j];
    sum[i + 1][S[i]]++;
  }
  int qs = sum[N][2];
  vector<vector<int64_t>> cs(N + 1, vector<int64_t>(2));
  for (int d = 0; d < 2; d++)
    for (int i = 0; i < N; i++)
      add(cs[i + 1][d], cs[i][d] + comb_mod(qs - d, i));
  int64_t ans = 0;
  for (int i = 0; i < N; i++)
    if (S[i] != 1) {
      int s1 = sum[i][0];
      int s2 = sum[N][1] - sum[i + 1][1];
      int q2 = sum[N][2] - sum[i + 1][2];
      int d = (S[i] == 2);
      int up = s2 - s1 + q2;
      if (up > 0) add(ans, cs[up][d]);
    }
  cout << ans << endl;
  return 0;
}
