#include <bits/stdc++.h>
using namespace std;
struct st {
  long long kici, san;
  long long kici2, san2;
};
long long v[200010];
st T[200010 * 4];
long long t, x, y, q;
long long n, k, S, O;
void upd(long long pos, long long x, long long l, long long r, long long node) {
  if (l == r) {
    v[pos] += x;
    if (v[pos] <= O)
      T[node].kici += x;
    else if (v[pos] - x <= O)
      T[node].san++, T[node].kici -= v[pos] - x;
    if (v[pos] <= S)
      T[node].kici2 += x;
    else if (v[pos] - x <= S)
      T[node].san2++, T[node].kici2 -= v[pos] - x;
    return;
  }
  if (pos <= (l + r) / 2)
    upd(pos, x, l, (l + r) / 2, node * 2);
  else
    upd(pos, x, (l + r) / 2 + 1, r, node * 2 + 1);
  T[node].san = T[node * 2].san + T[node * 2 + 1].san;
  T[node].san2 = T[node * 2].san2 + T[node * 2 + 1].san2;
  T[node].kici = T[node * 2].kici + T[node * 2 + 1].kici;
  T[node].kici2 = T[node * 2].kici2 + T[node * 2 + 1].kici2;
}
long long tap(long long a, long long b, long long x, long long l, long long r,
              long long node) {
  if (l > b || r < a) return 0;
  if (l >= a && r <= b) {
    if (x == 1)
      return T[node].kici + T[node].san * O;
    else
      return T[node].kici2 + T[node].san2 * S;
  }
  return tap(a, b, x, l, (l + r) / 2, node * 2) +
         tap(a, b, x, (l + r) / 2 + 1, r, node * 2 + 1);
}
int main() {
  scanf("%lld%lld%lld%lld%lld", &n, &k, &S, &O, &q);
  while (q--) {
    scanf("%lld%lld", &t, &x);
    if (t == 1) {
      scanf("%lld", &y);
      upd(x, y, 1, n, 1);
    } else
      printf("%lld\n", tap(1, x - 1, 1, 1, n, 1) + tap(x + k, n, 2, 1, n, 1));
  }
}
