#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 5;
long long mod = 1e9 + 7, mod1 = 998244353, mod2 = 1e9 + 9, inf = 1e9 + 7;
long long infll = 1e18 + 7;
long long a, b;
struct segment_tree {
  long long seg1[4 * N], seg2[4 * N];
  void update(long long id, long long l, long long r, long long i,
              long long val) {
    if (i < l || r < i) {
      return;
    }
    if (l == r) {
      seg1[id] = min(seg1[id] + val, a);
      seg2[id] = min(seg2[id] + val, b);
      return;
    }
    long long mid = (l + r) >> 1;
    update(id << 1, l, mid, i, val);
    update(id << 1 | 1, mid + 1, r, i, val);
    seg1[id] = seg1[id << 1] + seg1[id << 1 | 1];
    seg2[id] = seg2[id << 1] + seg2[id << 1 | 1];
  }
  long long get(long long id, long long l, long long r, long long u,
                long long v, long long kek) {
    if (v < l || r < u) {
      return 0;
    }
    if (u <= l && r <= v) {
      if (kek == 0)
        return seg2[id];
      else
        return seg1[id];
    }
    long long mid = (l + r) >> 1;
    return get(id << 1, l, mid, u, v, kek) +
           get(id << 1 | 1, mid + 1, r, u, v, kek);
  }
} it;
long long n, k, q;
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k >> a >> b >> q;
  while (q--) {
    long long t;
    cin >> t;
    if (t == 1) {
      long long d, x;
      cin >> d >> x;
      it.update(1, 1, n, d, x);
    } else {
      long long x;
      cin >> x;
      cout << it.get(1, 1, n, 1, x - 1, 0) + it.get(1, 1, n, x + k, n, 1)
           << '\n';
    }
  }
}
