#include <bits/stdc++.h>
using namespace std;
vector<long long> t1, t2;
long long a, b, n, k, q, day, val, p, t;
void update1(long long i, long long l, long long r, long long qi,
             long long qx) {
  if (l + 1 == r) {
    t1[i] += qx;
    t1[i] = min(t1[i], a);
    return;
  }
  long long m = (r + l) >> 1;
  if (qi < m) {
    update1(2 * i + 1, l, m, qi, qx);
  } else {
    update1(2 * i + 2, m, r, qi, qx);
  }
  t1[i] = t1[2 * i + 1] + t1[2 * i + 2];
}
void update2(long long i, long long l, long long r, long long qi,
             long long qx) {
  if (l + 1 == r) {
    t2[i] += qx;
    t2[i] = min(t2[i], b);
    return;
  }
  long long m = (r + l) >> 1;
  if (qi < m) {
    update2(2 * i + 1, l, m, qi, qx);
  } else {
    update2(2 * i + 2, m, r, qi, qx);
  }
  t2[i] = t2[2 * i + 1] + t2[2 * i + 2];
}
long long get1(long long i, long long l, long long r, long long ql,
               long long qr) {
  if (r <= ql || qr <= l) {
    return 0;
  }
  if (ql <= l && r <= qr) {
    return t1[i];
  }
  long long m = (r + l) / 2;
  return get1(2 * i + 1, l, m, ql, qr) + get1(2 * i + 2, m, r, ql, qr);
}
long long get2(long long i, long long l, long long r, long long ql,
               long long qr) {
  if (r <= ql || qr <= l) {
    return 0;
  }
  if (ql <= l && r <= qr) {
    return t2[i];
  }
  long long m = (r + l) / 2;
  return get2(2 * i + 1, l, m, ql, qr) + get2(2 * i + 2, m, r, ql, qr);
}
void Not_Stable() {
  cin >> n >> k >> a >> b >> q;
  t1.resize(4 * n);
  t2.resize(4 * n);
  long long x, y, z;
  for (long long i = 0; i < q; i++) {
    cin >> x >> y;
    if (x == 1) {
      cin >> z;
      update1(0, 0, n, y - 1, z);
      update2(0, 0, n, y - 1, z);
    } else {
      cout << get2(0, 0, n, 0, y - 1) + get1(0, 0, n, y - 1 + k, n) << endl;
    }
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false), cin.tie(nullptr);
  ;
  long long g = 1;
  while (g--) Not_Stable();
  return 0;
}
