#include <bits/stdc++.h>
using namespace std;
int tree1[200001];
int tree2[200001];
int MaxVal;
void updatetree1(int idx, int val) {
  while (idx <= MaxVal) {
    tree1[idx] += val;
    idx += (idx & -idx);
  }
}
void updatetree2(int idx, int val) {
  while (idx <= MaxVal) {
    tree2[idx] += val;
    idx += (idx & -idx);
  }
}
int readtree1(int idx) {
  int sum = 0;
  while (idx > 0) {
    sum += tree1[idx];
    idx -= (idx & -idx);
  }
  return sum;
}
int readtree2(int idx) {
  int sum = 0;
  while (idx > 0) {
    sum += tree2[idx];
    idx -= (idx & -idx);
  }
  return sum;
}
int main() {
  int n, k, a, b, q, broj1, broj2, broj3, i;
  int vkupno[200001];
  memset(vkupno, 0, sizeof vkupno);
  memset(tree1, 0, sizeof tree1);
  memset(tree2, 0, sizeof tree2);
  cin >> n >> k >> a >> b >> q;
  MaxVal = n;
  for (i = 0; i < q; i++) {
    scanf("%d", &broj1);
    if (broj1 == 1) {
      scanf("%d%d", &broj2, &broj3);
      int operacii;
      if (vkupno[broj2] + broj3 > b) {
        if (vkupno[broj2] >= b)
          operacii = 0;
        else
          operacii = b - vkupno[broj2];
      } else
        operacii = broj3;
      updatetree1(broj2, operacii);
      if (vkupno[broj2] + broj3 > a) {
        if (vkupno[broj2] >= a)
          operacii = 0;
        else
          operacii = a - vkupno[broj2];
      } else
        operacii = broj3;
      updatetree2(broj2, operacii);
      vkupno[broj2] += broj3;
    } else {
      scanf("%d", &broj2);
      int kraj = 0;
      if (broj2 > 1) {
        kraj = kraj + readtree1(broj2 - 1);
      }
      if (broj2 + k - 1 < n) {
        kraj = kraj + readtree2(n);
        kraj = kraj - readtree2(broj2 + k - 1);
      }
      printf("%d\n", kraj);
    }
  }
  return 0;
}
