#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set \
tree<pair<int, int>, null_type, less<pair<int, int>>, rb_tree_tag, \
tree_order_statistics_node_update>
#define ll long long
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define el '\n'
#define sz(a) (int)(a).size()
#define pi acos(-1)
// #define int ll
#ifdef LOCAL
#include "debug.hpp"
#else
#define debug(...) 0
#define debug_itr(...) 0
#define debug_bits(...) 0
#endif
const ll mod = 998244353, N = 3e5 + 5;
void solve() {
int n;
cin >> n;
vector<int> a(n), pre(n + 1);
for (int &i : a)
cin >> i;
vector<int> cnt(n);
ordered_set s;
for (int i = n - 1; i >= 0; --i) {
cnt[i] = sz(s) - s.order_of_key({a[i], i});
s.insert({a[i], i});
}
debug(cnt);
for (int i = 1; i <= n; ++i) {
pre[i] = pre[i - 1] * 2 + 1;
pre[i] %= mod;
}
sort(all(a));
debug(a);
ll ans = 0;
for (int &i : cnt) {
ans = (ans % mod + pre[i] % mod) % mod;
}
cout << ans << el;
}
int32_t main() {
cin.tie(0)->sync_with_stdio(0);
int t = 1;
// cin >> t;
while (t--)
solve();
#ifdef LOCAL
debug((float)clock() / CLOCKS_PER_SEC);
#endif
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojaW5jbHVkZSA8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKI2RlZmluZSBvcmRlcmVkX3NldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICB0cmVlPHBhaXI8aW50LCBpbnQ+LCBudWxsX3R5cGUsIGxlc3M8cGFpcjxpbnQsIGludD4+LCByYl90cmVlX3RhZywgICAgICAgICAgIFwKICAgICAgIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4KCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKGEpIChhKS5iZWdpbigpLCAoYSkuZW5kKCkKI2RlZmluZSByYWxsKGEpIChhKS5yYmVnaW4oKSwgKGEpLnJlbmQoKQojZGVmaW5lIGVsICdcbicKI2RlZmluZSBzeihhKSAoaW50KShhKS5zaXplKCkKI2RlZmluZSBwaSBhY29zKC0xKQovLyAjZGVmaW5lIGludCBsbAoKI2lmZGVmIExPQ0FMCiNpbmNsdWRlICJkZWJ1Zy5ocHAiCiNlbHNlCiNkZWZpbmUgZGVidWcoLi4uKSAwCiNkZWZpbmUgZGVidWdfaXRyKC4uLikgMAojZGVmaW5lIGRlYnVnX2JpdHMoLi4uKSAwCiNlbmRpZgoKY29uc3QgbGwgbW9kID0gOTk4MjQ0MzUzLCBOID0gM2U1ICsgNTsKCnZvaWQgc29sdmUoKSB7CiAgaW50IG47CiAgY2luID4+IG47CiAgdmVjdG9yPGludD4gYShuKSwgcHJlKG4gKyAxKTsKICBmb3IgKGludCAmaSA6IGEpCiAgICBjaW4gPj4gaTsKICB2ZWN0b3I8aW50PiBjbnQobik7CiAgb3JkZXJlZF9zZXQgczsKICBmb3IgKGludCBpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICBjbnRbaV0gPSBzeihzKSAtIHMub3JkZXJfb2Zfa2V5KHthW2ldLCBpfSk7CiAgICBzLmluc2VydCh7YVtpXSwgaX0pOwogIH0KICBkZWJ1ZyhjbnQpOwoKICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgIHByZVtpXSA9IHByZVtpIC0gMV0gKiAyICsgMTsKICAgIHByZVtpXSAlPSBtb2Q7CiAgfQogIHNvcnQoYWxsKGEpKTsKICBkZWJ1ZyhhKTsKCiAgbGwgYW5zID0gMDsKICBmb3IgKGludCAmaSA6IGNudCkgewogICAgYW5zID0gKGFucyAlIG1vZCArIHByZVtpXSAlIG1vZCkgJSBtb2Q7CiAgfQogIGNvdXQgPDwgYW5zIDw8IGVsOwp9CgppbnQzMl90IG1haW4oKSB7CiAgY2luLnRpZSgwKS0+c3luY193aXRoX3N0ZGlvKDApOwogIGludCB0ID0gMTsKICAvLyBjaW4gPj4gdDsKICB3aGlsZSAodC0tKQogICAgc29sdmUoKTsKI2lmZGVmIExPQ0FMCiAgZGVidWcoKGZsb2F0KWNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyk7CiNlbmRpZgogIHJldHVybiAwOwp9