#include <bits/stdc++.h>
using namespace std;
template <class T> inline void read(T &x) {
	x= 0;
	char c= getchar();
	while(!isdigit(c)) c= getchar();
	while(isdigit(c)) x= x * 10 + (c & 15), c= getchar();
}
const int P= 998244353;
#define add(a, b) ((a+= b) >= P ? a-= P : a)
#define N 505
int n, a[N], f[N][N], ans;
inline bool cmp(const int &x, const int &y) {
	return a[x] < a[y] || (a[x] == a[y] && x < y);
}
signed main() {
	read(n);
	for(int i= 1; i <= n; i++) {
		char c;
		scanf(" %c", &c);
		if(c == '+')
			read(a[i]);
		else
			a[i]= -1;
	}
	for(int i= 1; i <= n; i++) {
		if(a[i] > 0) {
			memset(f, 0, sizeof(f));
			f[0][0]= 1;
			for(int j= 1; j <= n; j++) {
				for(int k= (j <= i ? 0 : 1); k <= n; k++) {
					if(f[j - 1][k] == 0) continue;
					if(i == j)
						add(f[j][k + 1], f[j - 1][k]);
					else if(a[j] > 0)
						add(f[j][k], f[j - 1][k]), add(f[j][k + cmp(j, i)], f[j - 1][k]);
					else
						add(f[j][k], f[j - 1][k]), add(f[j][max(0, k - 1)], f[j - 1][k]);
				}
			}
			for(int k= 1; k <= n; k++) add(ans, (long long)f[n][k] * a[i] % P);
		}
	}
	printf("%d", ans);
	return 0;
}