#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

const int MAXN=500,MOD=998244353;
int n,op[MAXN+5],a[MAXN+5];
int f[MAXN+5][MAXN+5],ans;

int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++) {
		char c=getchar(); while(c!='-'&&c!='+') c=getchar();
		if(c=='-') op[i]=0; else scanf("%d",&a[i]),op[i]=1;
	}
	for(int i=1;i<=n;i++) {
		f[0][0]=1;
		for(int j=1;j<=n;j++) {
			for(int k=0;k<=n;k++) {
				if(j<i) {
					if(!op[j]) {
						f[j][k]=(f[j-1][k+1]+f[j-1][k])%MOD;
						if(!k) f[j][k]=(f[j][k]+f[j-1][k])%MOD;
					}
					if(op[j]&&a[j]>a[i]) f[j][k]=f[j-1][k]*2%MOD;
					if(op[j]&&a[j]<=a[i]) {
						f[j][k]=f[j-1][k];
						if(k>0) f[j][k]=(f[j][k]+f[j-1][k-1])%MOD;
					}
				} else if(j==i) {
					f[j][k]=f[j-1][k];
				} else {
					if(!op[j]) f[j][k]=(f[j-1][k+1]+f[j-1][k])%MOD;
					if(op[j]&&a[j]>=a[i]) f[j][k]=f[j-1][k]*2%MOD;
					if(op[j]&&a[j]<a[i]) {
						f[j][k]=f[j-1][k];
						if(k>0) f[j][k]=(f[j][k]+f[j-1][k-1])%MOD;
					}
				}
			}
		}
		int tot=0;
		for(int i=0;i<=n;i++) tot=(tot+f[n][i])%MOD;
		ans=(ans+1ll*tot*a[i]%MOD)%MOD;
	}
	printf("%d\n",ans);
	return 0; 
}