#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
const int MOD = 998244353;
int N;
if(!(cin >> N)) return 0;
vector<int> A(N + 1);
for (int i = 1; i <= N; ++i) cin >> A[i];
vector<int> p2(N + 3, 1);
for (int i = 1; i < (int)p2.size(); ++i) p2[i] = (p2[i - 1] * 2LL) % MOD;
vector<int> nxt0(N + 3, 1), nxt1(N + 3, 1);
for (int i = N; i >= 2; --i) {
vector<int> cur0(N + 3), cur1(N + 3);
cur0[0] = cur1[0] = 0;
bool asc = A[i - 1] < A[i];
for (int q = 1; q <= N; ++q) {
int pop = cur1[q - 1];
int add = (long long)p2[q - 1] * nxt0[q + 1] % MOD;
cur1[q] = (pop + add) % MOD;
cur0[q] = pop;
if (asc) cur0[q] = (cur0[q] + add) % MOD;
}
nxt0.swap(cur0);
nxt1.swap(cur1);
}
cout << nxt1[1] % MOD << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb25zdCBpbnQgTU9EID0gOTk4MjQ0MzUzOwoKICAgIGludCBOOwogICAgaWYoIShjaW4gPj4gTikpIHJldHVybiAwOwogICAgdmVjdG9yPGludD4gQShOICsgMSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpIGNpbiA+PiBBW2ldOwoKICAgIHZlY3RvcjxpbnQ+IHAyKE4gKyAzLCAxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgKGludClwMi5zaXplKCk7ICsraSkgcDJbaV0gPSAocDJbaSAtIDFdICogMkxMKSAlIE1PRDsKCiAgICB2ZWN0b3I8aW50PiBueHQwKE4gKyAzLCAxKSwgbnh0MShOICsgMywgMSk7CgogICAgZm9yIChpbnQgaSA9IE47IGkgPj0gMjsgLS1pKSB7CiAgICAgICAgdmVjdG9yPGludD4gY3VyMChOICsgMyksIGN1cjEoTiArIDMpOwogICAgICAgIGN1cjBbMF0gPSBjdXIxWzBdID0gMDsKICAgICAgICBib29sIGFzYyA9IEFbaSAtIDFdIDwgQVtpXTsKICAgICAgICBmb3IgKGludCBxID0gMTsgcSA8PSBOOyArK3EpIHsKICAgICAgICAgICAgaW50IHBvcCA9IGN1cjFbcSAtIDFdOwogICAgICAgICAgICBpbnQgYWRkID0gKGxvbmcgbG9uZylwMltxIC0gMV0gKiBueHQwW3EgKyAxXSAlIE1PRDsKICAgICAgICAgICAgY3VyMVtxXSA9IChwb3AgKyBhZGQpICUgTU9EOwogICAgICAgICAgICBjdXIwW3FdID0gcG9wOwogICAgICAgICAgICBpZiAoYXNjKSBjdXIwW3FdID0gKGN1cjBbcV0gKyBhZGQpICUgTU9EOwogICAgICAgIH0KICAgICAgICBueHQwLnN3YXAoY3VyMCk7CiAgICAgICAgbnh0MS5zd2FwKGN1cjEpOwogICAgfQoKICAgIGNvdXQgPDwgbnh0MVsxXSAlIE1PRCA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0K