#include <bits/stdc++.h>
using namespace std;
long long n, k, a, b, q, x, y, plus1, plus2, i;
long long mem1[1600007], mem2[1600007], arr1[1600007], arr2[1600007];
long long query1(long long ctr, long long xt, long long yt, long long x,
                 long long y) {
  if (yt < xt) return 0;
  if (xt < 1) return 0;
  if (yt > y) return 0;
  long long m = (x + y) / 2;
  if (xt == x && yt == y) {
    return mem1[ctr];
  } else if (yt <= m) {
    return query1(2 * ctr, xt, yt, x, m);
  } else if (m + 1 <= xt) {
    return query1(2 * ctr + 1, xt, yt, m + 1, y);
  } else {
    long long tmp1, tmp2;
    tmp1 = query1(2 * ctr, xt, m, x, m);
    tmp2 = query1(2 * ctr + 1, m + 1, yt, m + 1, y);
    return tmp1 + tmp2;
  }
}
long long query2(long long ctr, long long xt, long long yt, long long x,
                 long long y) {
  if (yt < xt) return 0;
  if (xt < 1) return 0;
  if (yt > y) return 0;
  long long m = (x + y) / 2;
  if (xt == x && yt == y) {
    return mem2[ctr];
  } else if (yt <= m) {
    return query2(2 * ctr, xt, yt, x, m);
  } else if (m + 1 <= xt) {
    return query2(2 * ctr + 1, xt, yt, m + 1, y);
  } else {
    long long tmp1, tmp2;
    tmp1 = query2(2 * ctr, xt, m, x, m);
    tmp2 = query2(2 * ctr + 1, m + 1, yt, m + 1, y);
    return tmp1 + tmp2;
  }
}
void update1(long long ctr, long long xt, long long yt, long long x,
             long long y, long long p) {
  long long m = (x + y) / 2;
  if (xt == x && yt == y) {
    mem1[ctr] += p;
    return;
  } else if (yt <= m) {
    update1(2 * ctr, xt, yt, x, m, p);
  } else if (m + 1 <= xt) {
    update1(2 * ctr + 1, xt, yt, m + 1, y, p);
  } else {
  }
  mem1[ctr] = mem1[2 * ctr] + mem1[2 * ctr + 1];
}
void update2(long long ctr, long long xt, long long yt, long long x,
             long long y, long long p) {
  long long m = (x + y) / 2;
  if (xt == x && yt == y) {
    mem2[ctr] += p;
    return;
  } else if (yt <= m) {
    update2(2 * ctr, xt, yt, x, m, p);
  } else if (m + 1 <= xt) {
    update2(2 * ctr + 1, xt, yt, m + 1, y, p);
  } else {
  }
  mem2[ctr] = mem2[2 * ctr] + mem2[2 * ctr + 1];
}
int main() {
  scanf("%I64d%I64d%I64d%I64d%I64d", &n, &k, &a, &b, &q);
  a -= b;
  for (i = 0; i < q; i++) {
    scanf("%I64d", &x);
    if (x == 1) {
      scanf("%I64d%I64d", &x, &y);
      plus1 = min(y, b - arr1[x]);
      arr1[x] += plus1;
      y -= plus1;
      plus2 = min(y, a - arr2[x]);
      arr2[x] += plus2;
      update1(1, x, x, 1, n + k + 100, plus1);
      update2(1, x, x, 1, n + k + 100, plus2);
      for (int j = 1; j <= n; j++) {
      }
    } else {
      scanf("%I64d", &x);
      printf("%I64d\n", query1(1, 1, x - 1, 1, n + k + 100) +
                            query2(1, x + k, n + k + 100, 1, n + k + 100) +
                            query1(1, x + k, n + k + 100, 1, n + k + 100));
    }
  }
}
