#include <bits/stdc++.h>
using namespace std;
long long n, k, b, a, q;
long long m(long long node) { return node << 1; }
long long d(long long node) { return node >> 1; }
long long tree[1000000][2];
void update(long long node, long long s, long long e, long long l, long long r,
            long long v, long long bit) {
  if (r < s || e < l) return;
  if (l <= s && e <= r) {
    tree[node][bit] = min(tree[node][bit] + v, bit == 0 ? b : a);
    return;
  }
  update(m(node), s, d(s + e), l, r, v, bit);
  update(m(node) + 1, d(s + e) + 1, e, l, r, v, bit);
  tree[node][bit] = tree[m(node)][bit] + tree[m(node) + 1][bit];
}
long long qry(long long node, long long s, long long e, long long l,
              long long r, long long bit) {
  if (r < l) return 0;
  if (l >= n) return 0;
  if (r < s || e < l) return 0;
  if (l <= s && e <= r) return tree[node][bit];
  return qry(m(node), s, d(s + e), l, r, bit) +
         qry(m(node) + 1, d(s + e) + 1, e, l, r, bit);
}
int main() {
  cin >> n >> k >> a >> b >> q;
  long long t, x, y;
  while (q--) {
    scanf("%lld", &t);
    if (t == 1) {
      scanf("%lld%lld", &x, &y);
      update(1, 0, n - 1, x - 1, x - 1, min(y, b), 0);
      update(1, 0, n - 1, x - 1, x - 1, min(y, a), 1);
    } else {
      scanf("%lld", &x);
      x--;
      printf("%lld\n",
             qry(1, 0, n - 1, 0, x - 1, 0) + qry(1, 0, n - 1, x + k, n - 1, 1));
    }
  }
}
