#include <bits/stdc++.h>
using namespace std;
long long int modulo = 1e9 + 7;
long long int base = 1e7 + 19;
const int limite = 1 << 15;
int k;
void anyade(int maximo[1001], int v, int w) {
  for (int i = k; i >= w; i--) maximo[i] = max(maximo[i], maximo[i - w] + v);
}
void copia(int maximo[1001], int nextmaximo[1001]) {
  for (int i = 0; i <= k; i++) nextmaximo[i] = maximo[i];
}
int calcula(int maximo[1001]) {
  int suma = 0;
  long long int prod = 1;
  for (int i = 1; i <= k; i++) {
    suma = (suma + prod * maximo[i]) % modulo;
    prod = prod * base % modulo;
  }
  return suma;
}
int n;
int maximo[limite][1001];
int v[limite];
int w[limite];
int le[limite];
int ri[limite];
int tipo[limite];
int elem[limite];
int entra[limite];
int sale[limite];
int main() {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    cin >> v[i] >> w[i];
    entra[i] = -1;
  }
  int q;
  cin >> q;
  for (int i = 1; i <= q; i++) {
    cin >> tipo[i];
    if (tipo[i] == 1) {
      n++;
      elem[i] = n;
      entra[elem[i]] = i;
      cin >> v[elem[i]] >> w[elem[i]];
    } else if (tipo[i] == 2) {
      cin >> elem[i];
      sale[elem[i]] = i;
    }
  }
  for (int i = 1; i <= n; i++)
    if (sale[i] == 0) sale[i] = limite;
  for (int i = 1; i <= n; i++)
    if (entra[i] == -1 and sale[i] == limite) anyade(maximo[0], v[i], w[i]);
  le[0] = 0;
  ri[0] = limite;
  int amount = 1;
  do {
    amount *= 2;
    for (int i = amount - 1; i >= 0; i--) {
      int p = i >> 1;
      copia(maximo[p], maximo[i]);
      if (i & 1) {
        ri[i] = ri[p];
        le[i] = (le[p] + ri[p]) / 2;
        for (int j = le[p]; j < le[i]; j++) {
          if (tipo[j] == 1 and sale[elem[j]] >= ri[i]) {
            anyade(maximo[i], v[elem[j]], w[elem[j]]);
          }
        }
      } else {
        le[i] = le[p];
        int rip = ri[p];
        ri[i] = (le[p] + ri[p]) / 2;
        for (int j = ri[i]; j < rip; j++) {
          if (tipo[j] == 2 and entra[elem[j]] < le[i]) {
            anyade(maximo[i], v[elem[j]], w[elem[j]]);
          }
        }
      }
    }
  } while (amount < limite);
  for (int i = 1; i <= q; i++)
    if (tipo[i] == 3) cout << calcula(maximo[i]) << endl;
}
