#include <bits/stdc++.h>
using namespace std;
const int INF = 2139062143;
const int maxn = 2010, maxq = 1e6 + 10;
int tot, rt[maxn];
struct Tree {
  long long sum;
  int l, r;
} tree[maxn * 30];
void update(int l, int r, int &x, int y, int v, int k) {
  x = ++tot;
  tree[x] = tree[y];
  tree[x].sum += v;
  if (l == r) {
    return;
  }
  int m = (l + r) >> 1;
  if (k <= m)
    update(l, m, tree[x].l, tree[y].l, v, k);
  else
    update(m + 1, r, tree[x].r, tree[y].r, v, k);
}
long long query(int x, int L, int R, int l, int r) {
  if (!x) return 0;
  if (L <= l && r <= R) return tree[x].sum;
  int m = (l + r) >> 1;
  long long ans = 0;
  if (L <= m) ans += query(tree[x].l, L, R, l, m);
  if (R > m) ans += query(tree[x].r, L, R, m + 1, r);
  return ans;
}
struct P {
  int x, y, v;
  bool operator<(P a) const {
    if (x != a.x) return x < a.x;
    return y < a.y;
  }
};
vector<P> st[maxn];
vector<int> has[maxn];
struct Q {
  int k, x1, x2, y1, y2;
} op[maxq];
int n, m, k, q;
int sz[maxn];
long long ans[maxq];
bool open[maxn];
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= k; i++) {
    scanf("%d", &sz[i]);
    for (int j = 0; j < sz[i]; j++) {
      P temp;
      scanf("%d%d%d", &temp.x, &temp.y, &temp.v);
      st[i].push_back(temp);
    }
    sort(st[i].begin(), st[i].end());
    open[i] = true;
  }
  scanf("%d", &q);
  char s[20];
  for (int i = 1; i <= q; i++) {
    scanf("%s", s);
    if (s[0] == 'A') {
      scanf("%d%d%d%d", &op[i].x1, &op[i].y1, &op[i].x2, &op[i].y2);
      op[i].k = 1;
      for (int j = 1; j <= k; j++)
        if (open[j]) {
          has[j].push_back(i);
        }
    } else {
      scanf("%d", &op[i].x1);
      op[i].k = 2;
      open[op[i].x1] = !open[op[i].x1];
    }
  }
  for (int i = 1; i <= k; i++) {
    tot = 0;
    for (int j = 0; j < sz[i]; j++) {
      update(1, m, rt[j + 1], rt[j], st[i][j].v, st[i][j].y);
    }
    for (int j = 0, len = has[i].size(); j < len; j++) {
      int t = has[i][j];
      int x1 = op[t].x1, y1 = op[t].y1, x2 = op[t].x2, y2 = op[t].y2;
      P temp;
      temp.x = x2;
      temp.y = m + 1;
      int pos = lower_bound(st[i].begin(), st[i].end(), temp) - st[i].begin();
      if (pos) ans[t] += query(rt[pos], y1, y2, 1, m);
      temp.x = x1, temp.y = 0;
      pos = lower_bound(st[i].begin(), st[i].end(), temp) - st[i].begin();
      if (pos) ans[t] -= query(rt[pos], y1, y2, 1, m);
    }
  }
  for (int i = 1; i <= q; i++)
    if (op[i].k == 1) printf("%I64d\n", ans[i]);
  return 0;
}
