#include <bits/stdc++.h>
using namespace std;
inline long long in() {
  int32_t x;
  scanf("%d", &x);
  return x;
}
inline long long lin() {
  long long x;
  scanf("%lld", &x);
  return x;
}
const long long maxn = 1e6 + 10;
long long n, k, a, b, q;
long long cnt[maxn];
long long stree[2][4 * maxn];
inline void update(long long qx, long long p = 0, long long l = 0,
                   long long r = n - 1) {
  if (l > qx || r < qx) return;
  if (l == r) {
    stree[0][p] = min(cnt[l], b);
    stree[1][p] = min(cnt[l], a);
    return;
  }
  long long mid = (l + r) >> 1;
  update(qx, 2 * p + 1, l, mid);
  update(qx, 2 * p + 2, mid + 1, r);
  for (long long pt = 0; pt <= 1; pt++)
    stree[pt][p] = stree[pt][2 * p + 1] + stree[pt][2 * p + 2];
}
inline long long get(long long ql, long long qr, long long tp, long long p = 0,
                     long long l = 0, long long r = n - 1) {
  if (l > qr || r < ql || l > r) return 0;
  if (l >= ql && r <= qr) return stree[tp][p];
  long long mid = (l + r) >> 1;
  return get(ql, qr, tp, 2 * p + 1, l, mid) +
         get(ql, qr, tp, 2 * p + 2, mid + 1, r);
}
int32_t main() {
  n = in(), k = in(), a = in(), b = in(), q = in();
  while (q--) {
    long long tp = in();
    if (tp == 1) {
      long long day = in() - 1, add = in();
      cnt[day] += add;
      update(day);
    } else {
      long long day = in() - 1;
      long long finishDay = day + k;
      cout << get(0, day - 1, 0) + get(finishDay, n - 1, 1) << "\n";
    }
  }
}
