#include <bits/stdc++.h>
using namespace std;
long long a[250001], b[250001], t[900001][2], n, i, k, type, one, two, q, nom,
    zn;
void update1(long long tl, long long tr, long long nom, long long nomN,
             long long zn) {
  if (tr < nomN || tl > nomN) return;
  t[nom][0] += zn;
  if (tl == tr) return;
  long long mid = (tl + tr) / 2;
  update1(tl, mid, nom * 2, nomN, zn);
  update1(mid + 1, tr, nom * 2 + 1, nomN, zn);
}
long long get1(long long tl, long long tr, long long nom, long long l,
               long long r) {
  if (tl > tr) return 0;
  if (tr < l || tl > r) return 0;
  if (l <= tl && tr <= r) return t[nom][0];
  long long mid = (tl + tr) / 2;
  return get1(tl, mid, nom * 2, l, r) + get1(mid + 1, tr, nom * 2 + 1, l, r);
}
void update2(long long tl, long long tr, long long nom, long long nomN,
             long long zn) {
  if (tr < nomN || tl > nomN) return;
  t[nom][1] += zn;
  if (tl == tr) return;
  long long mid = (tl + tr) / 2;
  update2(tl, mid, nom * 2, nomN, zn);
  update2(mid + 1, tr, nom * 2 + 1, nomN, zn);
}
long long get2(long long tl, long long tr, long long nom, long long l,
               long long r) {
  if (tl > tr) return 0;
  if (tr < l || tl > r) return 0;
  if (l <= tl && tr <= r) return t[nom][1];
  long long mid = (tl + tr) / 2;
  return get2(tl, mid, nom * 2, l, r) + get2(mid + 1, tr, nom * 2 + 1, l, r);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k >> one >> two >> q;
  while (q--) {
    cin >> type;
    if (type == 1) {
      cin >> nom >> zn;
      update1(1, n, 1, nom, min(a[nom] + zn, one) - a[nom]);
      a[nom] = min(a[nom] + zn, one);
      update2(1, n, 1, nom, min(b[nom] + zn, two) - b[nom]);
      b[nom] = min(b[nom] + zn, two);
    } else {
      cin >> nom;
      cout << get2(1, n, 1, 1, nom - 1) + get1(1, n, 1, nom + k, n) << '\n';
    }
  }
  return 0;
}
