Problem:
Score : 600 points

Problem Statement

You are given N integers. The i-th integer is a_i.
Find the number, modulo 998244353, of ways to paint each of the integers red, green or blue so that the following condition is satisfied:

Let R, G and B be the sums of the integers painted red, green and blue, respectively. There exists a triangle with positive area whose sides have lengths R, G and B.

Constraints

3 \leq N \leq 300

1 \leq a_i \leq 300(1\leq i\leq N)

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
a_1
:
a_N

Output

Print the number, modulo 998244353, of ways to paint each of the integers red, green or blue so that the condition is satisfied.

Sample Input 1

4
1
1
1
2

Sample Output 1

18

We can only paint the integers so that the lengths of the sides of the triangle will be 1, 2 and 2, and there are 18 such ways.

Sample Input 2

6
1
3
2
3
5
2

Sample Output 2

150

Sample Input 3

20
3
1
4
1
5
9
2
6
5
3
5
8
9
7
9
3
2
3
8
4

Sample Output 3

563038556

Solution in Fortran (gfortran v4.8.4) (judge verdict: Runtime Error)

program main
  implicit none
  integer :: i, n, k, m, total
  integer, allocatable :: a(:), dp(:,:,:)
  integer, parameter :: pmod = 998244353

  read *, n
  allocate (a(0:n-1))
  do i = 1, n
    read *, a(i)
  end do
  total = 3 ** n - (2**n - 2) * 3 - 3
  m = int((sum(a)+1)/2)
  allocate (dp(0:n, 0:2, 0:m))
  dp = 0
  dp(0, 2, 0) = 1

  do i = 1, n
    k = a(i-1)
    dp(i, :, k:) = dp(i, :, k:) + dp(i-1, :, :m-k-1)
    dp(i, :,m-1) = dp(i, :,m-1) + sum(dp(i-1, :, m-k:), dim=2)

    dp(i, 0, :) = dp(i, 0, :) + (dp(i-1, 0, :) + dp(i-1, 1, :)) * 2
    dp(i, 1, :) = dp(i, 1, :) + dp(i-1, 1, :)
    dp(i, 1, :) = dp(i, 1, :) + dp(i-1, 2, :)

    if (mod(i, 10) == 0) dp(i, :, :) = mod(dp(i, :, :), pmod)
  end do

  print '(i0)', mod((total - dp(-1, 0, -1) * 3), pmod)

end program