#include <bits/stdc++.h>
using namespace std;
const int maxn = 2000 + 10;
const int maxq = 1e6 + 100;
struct Node {
  int r, c;
  long long w;
  Node(int r = 0, int c = 0, long long w = 0) : r(r), c(c), w(w) {}
};
vector<Node> save[maxn];
long long X[maxn][maxn];
long long sum(int x, int y) {
  long long sum = 0;
  for (int i = x; i > 0; i -= ((-i) & (i)))
    for (int j = y; j > 0; j -= ((-j) & (j))) sum += X[i][j];
  return sum;
}
void add(int x, int y, long long val) {
  for (int i = x; i < maxn; i += ((-i) & (i)))
    for (int j = y; j < maxn; j += ((-j) & (j))) X[i][j] += val;
}
long long query(int r1, int c1, int r2, int c2) {
  return sum(r2, c2) - sum(r1 - 1, c2) - sum(r2, c1 - 1) + sum(r1 - 1, c1 - 1);
}
int R, C, k;
int q;
int type[maxq];
int idx[maxq];
int tmp[maxq][4];
int qn;
int oidx[maxn];
long long tot[maxn][maxn];
bool isOff[maxn];
int main() {
  memset(X, 0, sizeof(X));
  scanf("%d %d %d", &R, &C, &k);
  for (int i = 1; i <= k; ++i) {
    int num;
    scanf("%d", &num);
    while (num--) {
      int r, c, w;
      scanf("%d %d %d", &r, &c, &w);
      save[i].push_back(Node(r, c, w));
    }
  }
  qn = 0;
  scanf("%d", &q);
  char buf[10];
  for (int i = 1; i <= q; ++i) {
    scanf("%s", &buf);
    if (buf[0] == 'S') {
      type[i] = 0;
      scanf("%d", &tmp[i][0]);
    } else {
      type[i] = 1;
      for (int j = 0; j < 4; ++j) scanf("%d", &tmp[i][j]);
      qn++;
      idx[i] = qn;
      oidx[qn] = i;
    }
  }
  for (int z = 1; z <= k; ++z) {
    int sz = save[z].size();
    for (int i = 0; i < sz; ++i) {
      int r = save[z][i].r;
      int c = save[z][i].c;
      long long w = save[z][i].w;
      add(r, c, w);
    }
    for (int i = 1; i <= qn; ++i) {
      int r1 = tmp[oidx[i]][0];
      int c1 = tmp[oidx[i]][1];
      int r2 = tmp[oidx[i]][2];
      int c2 = tmp[oidx[i]][3];
      tot[i][z] = query(r1, c1, r2, c2);
    }
    for (int i = 0; i < sz; ++i) {
      int r = save[z][i].r;
      int c = save[z][i].c;
      long long w = save[z][i].w;
      add(r, c, -w);
    }
  }
  memset(isOff, 0, sizeof(isOff));
  for (int i = 1; i <= q; ++i) {
    if (type[i] == 0) {
      int id = tmp[i][0];
      isOff[id] ^= 1;
    } else {
      long long res = 0;
      for (int j = 1; j <= k; ++j)
        if (!isOff[j]) res += tot[idx[i]][j];
      printf("%lld\n", res);
    }
  }
  return 0;
}
