#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5, M = 3e6 + 5;
int e[N], a[N], b[N], w[N], f[N], B[M], D[M], S[M], BC[M], CD[M], BCD[M],
    T[M][2];
int n, m, ans, lw, mo = 1e9 + 7, ll, x, y;
void add(int x) {
  for (; x <= n; x += x & -x) f[x]++;
}
int out(int x) {
  int ans = 0;
  for (; x; x -= x & -x) ans += f[x];
  return ans;
}
void nice(int t, int l, int r, int s, int x, int y, int d) {
  if (l == r) {
    B[t] = x;
    D[t] = y;
    S[t] += d;
    return;
  }
  int mid = l + r >> 1, k = mid < s;
  if (!T[t][k]) T[t][k] = ++ll;
  if (!k)
    nice(T[t][k], l, mid, s, x, y, d);
  else
    nice(T[t][k], mid + 1, r, s, x, y, d);
  x = T[t][0];
  y = T[t][1];
  S[t] = (S[x] + S[y]) % mo;
  B[t] = (B[x] + B[y]) % mo;
  D[t] = (D[x] + D[y]) % mo;
  BC[t] = (BC[x] + BC[y] + 1ll * B[x] * S[y]) % mo;
  CD[t] = (CD[x] + CD[y] + 1ll * S[x] * D[y]) % mo;
  BCD[t] = (BCD[x] + BCD[y] + 1ll * BC[x] * D[y] + 1ll * B[x] * CD[y]) % mo;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &e[i]), w[i] = e[i];
  sort(w + 1, w + n + 1);
  lw = unique(w + 1, w + n + 1) - w - 1;
  for (int i = 1; i <= n; i++) e[i] = lower_bound(w + 1, w + lw + 1, e[i]) - w;
  for (int i = 1; i <= n; i++) a[i] = out(e[i]), add(e[i]);
  memset(f, 0, sizeof f);
  for (int i = n; i >= 1; i--) b[i] = out(e[i]), add(e[i]);
  ll = lw;
  for (int i = 1; i <= n; i++) {
    ans = (ans - BCD[e[i]] + mo) % mo;
    nice(e[i], 1, n, i, a[i], b[i], 1);
    ans = (ans + BCD[e[i]]) % mo;
  }
  scanf("%d", &m);
  while (m--) {
    scanf("%d%d", &y, &x);
    ans = (ans - BCD[e[x]] + mo) % mo;
    if (y == 1)
      nice(e[x], 1, n, x, 0, 0, -1);
    else
      nice(e[x], 1, n, x, a[x], b[x], 1);
    ans = (ans + BCD[e[x]]) % mo;
    printf("%d\n", ans);
  }
}
