"use strict";
function I(s,f){this._s=s.split("\n");this._c=0;this._l=0;this._f=f||Number}I.prototype.a=function(){var l=this._s[this._l];if(!l)return;var t=l.trim().split(" ");var a=t[this._c];this._c++;if(t.length===this._c){this._c=0;this._l++}return this._f(a)};I.prototype.l=function(){var l=this._s[this._l];if(!l)return;this._c=0;this._l++;return l.split(" ").map(this._f)};
function build2DArray(r,u,a){for(var f=a||0,n=[],o=0;o<r;o++){for(var h=[],i=0;i<u;i++)h.push(f);n.push(h)}return n}

const mod = 998244353;
function main(input) {
  var o = new I(input);

  var n = o.a();
  var a = [];
  for (var i = 0; i<n; i++) {
    a.push(o.a());
  }

  var sum = a.reduce((acc, cur) => acc + cur, 0);

  var dp = build2DArray(n + 1, sum + 1);
  dp[0][0] = 1;
  for (var i = 1; i <= n; i++) {
    for (var j = 0; j <= sum; j++) {
      dp[i][j] += dp[i-1][j] * 2; // G, B
      dp[i][j] %= mod;

      if (j + a[i-1] <= sum) {
        dp[i][j+a[i-1]] += dp[i-1][j]; // R
        dp[i][j+a[i-1]] %= mod;
      }
    }
  }

  var dp2 = build2DArray(n + 1, sum + 1);
  dp2[0][0] = 1;
  for (var i = 1; i <= n; i++) {
    for (var j = 0; j <= sum; j++) {
      dp2[i][j] += dp2[i-1][j]; // G
      dp2[i][j] %= mod;

      if (j + a[i-1] <= sum) {
        dp2[i][j+a[i-1]] += dp2[i-1][j]; // R
        dp2[i][j+a[i-1]] %= mod;
      }
    }
  }

  var total = 1;
  for (var i = 0; i < n; i++) {
    total = (total * 3) % mod;
  }

  var ans1 = 0; // R >= S/2
  for (var j = Math.ceil(sum/2); j <= sum; j++) {
    ans1 += dp[n][j];
  }

  var ans2 = 0;
  if (sum % 2 === 0) {
    ans2 = dp2[n][sum/2];
  }

  let ans = (total - ans1 * 3 + ans2 * 3) % mod;
  ans = (ans + mod) % mod;

  console.log(ans);
}


main(require("fs").readFileSync("/dev/stdin", "utf8"));
