#include #include #include using namespace std; using namespace atcoder; using mint = modint998244353; void fast_io() { ios_base::sync_with_stdio(false); cin.tie(nullptr); } int main() { fast_io(); int n; cin >> n; vector p(n); for (int i = 0; i < n; i++) { cin >> p[i]; p[i]--; } vector p2(n); p2[0] = 1; for (int i = 1; i < n; i++) { p2[i] = p2[i - 1] * 2; } mint ans = 0; fenwick_tree fw(n), fw2(n); for (int i = 0; i < n; i++) { ans += fw2.sum(p[i], n) * p2[n - 1] - fw.sum(p[i], n) * p2[n - 1 - i]; fw.add(p[i], p2[i]); fw2.add(p[i], 1); } cout << ans.val() << endl; }