#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
long long modpow(long long x, long long n) {
  long long res = 1, r = x;
  while (n) {
    if (n % 2) res = res * r % MOD;
    r = r * r % MOD;
    n /= 2;
  }
  return res;
}
template <typename T>
struct BIT {
  int n;
  vector<T> bit;
  BIT() {}
  BIT(int n) : n(n) { bit.resize(n + 1); }
  T sum(int i) {
    i++;
    T res = 0;
    while (i) {
      res += bit[i];
      i -= (i & -i);
    }
    return res;
  }
  void add(int i, T x) {
    i++;
    while (i <= n) {
      bit[i] += x;
      i += (i & -i);
    }
  }
};
int main() {
  long long n;
  cin >> n;
  long long r = 1;
  for (int i = 1; i <= n; i++) r = r * modpow(i, MOD - 2) % MOD;
  int p[200002];
  int q[200002];
  fill(q, q + n, -1);
  for (int i = 0; i < n; i++) {
    cin >> p[i];
    p[i]--;
    if (p[i] >= 0) q[p[i]] = i;
  }
  long long ls[200002];
  ls[0] = 0;
  for (int i = 1; i <= n; i++) {
    ls[i] = ls[i - 1];
    if (p[i - 1] == -2) ls[i]++;
  }
  BIT<long long> bit(n);
  long long ans = 0;
  long long s = 0;
  long long w = 0;
  for (long long i = n - 1; i >= 0; i--) {
    if (q[i] != -1) {
      ans = (ans + bit.sum(q[i] - 1) +
             ls[q[i]] * modpow(ls[n], MOD - 2) % MOD * w) %
            MOD;
      bit.add(q[i], 1);
      s = (s + ls[n] - ls[q[i]]) % MOD;
    } else {
      ans = (ans + s * modpow(ls[n], MOD - 2) % MOD +
             w * modpow(2, MOD - 2) % MOD) %
            MOD;
      w++;
    }
  }
  cout << ans << endl;
}
