#include <iostream>
#include <vector>
#include <string>

#define ll long long
using namespace std;
template <class T>ostream &operator<<(ostream &o, const vector<T> &v){
  o << "{";
  for (int i = 0; i < (int)v.size(); i++)
    o << (i > 0 ? ", " : "") << v[i];
  o << "}";
  return o;
}

int main()
{
  int N, MOD = 998244353;
  cin >> N;
  vector<int> a(N);
  vector<vector<int>> dp(N + 1, vector<int>(N * N+1, 0));
  vector<vector<int>> bicol(N + 1, vector<int>(N * N+1, 0));
  dp[0][0] = 1;
  bicol[0][0] = 1;
  for (int i = 0; i < N; i++){
    cin >> a[i];
  }
  int sum = 0;
  for (int i = 0; i < N; i++){
    for (int j = 0; j < N * N; j++){
      dp[i+1][j] += dp[i][j]*2;
      bicol[i+1][j] += bicol[i][j];
      if (j-a[i]>=0) {
        dp[i+1][j] += dp[i][j-a[i]];
        bicol[i+1][j] += bicol[i][j-a[i]];
      }
      dp[i+1][j] %= MOD;
      bicol[i+1][j] %= MOD;
    }
    sum += a[i];
  }

  int ans = 1;
  for (int i = 0; i < N; i++){
    ans *= 3;
    ans %= MOD;
  }

  for (int i = (sum+1)/2; i <= N*N; i++){
    ans += MOD - dp[N][i]*3;
    ans %= MOD;
  }

  if(sum%2 == 0){
    ans += bicol[N][sum/2] * 3;
    ans %= MOD;
  }
  cout << ans << endl;
  return 0;
}
