#include <bits/stdc++.h>
using namespace std;
const int MOD=998244353;
int a[5005];
int ps[5005];
int p2[5005];
int dp[5005];
int main(){
freopen("polygon.in","r",stdin);
freopen("polygon.out","w",stdout);
int n,i,j,s,ma,ans=0;
cin>>n;
for(i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
ps[0]=0;
for(i=1;i<=n;i++)ps[i]=ps[i-1]+a[i-1];
p2[0]=1;
for(i=1;i<=n;i++)p2[i]=(p2[i-1]*2)%MOD;
ma=a[n-1];
memset(dp,0,sizeof(dp));
dp[0]=1;
for(j=0;j<=n-2;j++){
int aj=a[j];
for(s=ma;s>=aj;s--){
dp[s]=(dp[s]+dp[s-aj])%MOD;
}
int i_j=j+1;
if(i_j<2)continue;
int X=a[i_j];
int psi=ps[i_j];
if(psi<=X)continue;
int S=0;
for(s=0;s<=X;s++){
S=(S+dp[s])%MOD;
}
int con=(p2[i_j]-S)%MOD;
ans=(ans+con)%MOD;
}
ans=(ans+MOD)%MOD;
cout<<ans<<endl;
return 0;
}