#include<bits/stdc++.h>
using namespace std;
#define int ll
#define sz(x) int((x).size())
#define all(x) (x).begin(),(x).end()
using ll = long long;
using pi = pair<int,int>;
const int inf = 0x3f3f3f3f3f3f3f3f;
const int minf = 0xc0c0c0c0c0c0c0c0;





signed main() {
    ios::sync_with_stdio(0); cin.tie(0);

    int n; cin>>n;
    vector<int> A(n+5);
    vector<int> pos;
    for (int i=1; i<=n; i++) {
        char t; cin>>t;
        if (t == '+') {
            cin>>A[i];
            pos.push_back(i);
        }
    }

    int res = 0;

    const int mod = 998244353;

    for (auto x : pos) {
        vector<int> dp(1, 1);
        for (int i=1; i<=n; i++) {
            if (x == i) continue;

            auto dp_nxt = dp;

            if (A[i] == 0) {
                for (int k=1; k<sz(dp); k++) {
                    dp_nxt[k-1] += dp[k];
                    if (dp_nxt[k-1] >= mod) dp_nxt[k-1] -= mod;
                }
                // k == 0
                if (i < x) {
                    dp_nxt[0] += dp[0];
                    if (dp_nxt[0] >= mod) dp_nxt[0] -= mod;
                }
            }
            else {
                if (A[i] < A[x] || (A[i] == A[x] && i < x)) {
                    dp_nxt.resize(sz(dp) + 1);
                    for (int k=0; k<sz(dp); k++) {
                        dp_nxt[k+1] += dp[k];
                        if (dp_nxt[k+1] >= mod) dp_nxt[k+1] -= mod;
                    }
                }
                else {
                    for (int k=0; k<sz(dp); k++) {
                        dp_nxt[k] += dp[k];
                        if (dp_nxt[k] >= mod) dp_nxt[k] -= mod;
                    }
                }
            }

            swap(dp,dp_nxt);
        }

        int re = 0;

        for (auto i : dp) {
            re += i;
            if (re >= mod) re -= mod;
        }

        res += re * A[x] % mod;
        if (res >= mod) res -= mod;
    }

    cout<<res<<'\n';



    return 0;
}