#include <bits/stdc++.h>
using namespace std;
class BIT {
  vector<int> tree;

 public:
  BIT(int n) : tree(n + 1, 0) {}
  BIT(const vector<int>& Arg) {
    tree.resize(Arg.size());
    for (int i = 0; i < tree.size(); i++) increase(i, Arg[i]);
  }
  void increase(int i, int delta) {
    for (; i < (int)tree.size(); i |= i + 1) tree[i] += delta;
  }
  int getsum(int left, int right) { return sum(right) - sum(left - 1); }
  int sum(int ind) {
    int sum = 0;
    while (ind >= 0) {
      sum += tree[ind];
      ind &= ind + 1;
      ind--;
    }
    return sum;
  }
};
int main(int argc, char const* argv[]) {
  int n, k, a, b, q;
  scanf("%d %d", &n, &k);
  scanf("%d %d", &a, &b);
  scanf("%d", &q);
  BIT bita(n + 10);
  BIT bitb(n + 10);
  for (int i = 0; i < q; i += 1) {
    int op;
    scanf("%d", &op);
    if (op == 1) {
      int di, ai;
      scanf("%d %d", &di, &ai);
      bitb.increase(di, min(b, ai));
      bita.increase(di, min(a, ai));
      int sb = bitb.getsum(di, di);
      int sa = bita.getsum(di, di);
      if (sb > b) bitb.increase(di, b - sb);
      if (sa > a) bita.increase(di, a - sa);
    } else {
      int p;
      scanf("%d", &p);
      int nxt = p + k;
      int s = 0;
      if (p > 1) s += bitb.getsum(1, p - 1);
      if (nxt <= n) s += bita.getsum(nxt, n);
      printf("%d\n", s);
    }
  }
  return 0;
}
