#include <bits/stdc++.h>
using namespace std;
long long pwr(long long base, long long p, long long mod = (1000000007LL)) {
  long long ans = 1;
  while (p) {
    if (p & 1) ans = (ans * base) % mod;
    base = (base * base) % mod;
    p /= 2;
  }
  return ans;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
struct Query {
  int x1, y1, x2, y2, idx;
  Query() {}
  Query(int x1, int y1, int x2, int y2, int idx) {
    this->x1 = x1;
    this->y1 = y1;
    this->x2 = x2;
    this->y2 = y2;
    this->idx = idx;
  }
};
int r, c, g;
vector<pair<int, pair<int, int> > > garlands[2004];
vector<int> switches[2003];
vector<Query> queries;
long long BIT[2002][2002], ans[1000005];
void update(int x, int y, int val) {
  while (x <= r) {
    int yy = y;
    while (yy <= c) {
      BIT[x][yy] += val;
      yy += yy & (-yy);
    }
    x += x & (-x);
  }
}
long long sum(int x, int y) {
  long long ans = 0;
  while (x) {
    int yy = y;
    while (yy) {
      ans += BIT[x][yy];
      yy -= yy & (-yy);
    }
    x -= x & (-x);
  }
  return ans;
}
int main() {
  scanf("%d%d%d", &r, &c, &g);
  for (int i = 1; i <= g; i++) {
    int len;
    scanf("%d", &len);
    while (len--) {
      int x, y, c;
      scanf("%d%d%d", &x, &y, &c);
      garlands[i].push_back({c, {x, y}});
    }
  }
  int q;
  scanf("%d", &q);
  char str[10];
  for (int i = 1; i <= q; i++) {
    scanf("%s", str);
    if (str[0] == 'S') {
      int garland_num;
      scanf("%d", &garland_num);
      switches[garland_num].push_back(i);
    } else {
      int x1, y1, x2, y2;
      scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
      queries.push_back(Query(x1, y1, x2, y2, i));
    }
  }
  for (int i = 1; i <= g; i++) {
    for (auto cell : garlands[i]) {
      int x = cell.second.first;
      int y = cell.second.second;
      int val = cell.first;
      update(x, y, val);
    }
    for (auto q : queries) {
      int x1 = q.x1;
      int y1 = q.y1;
      int x2 = q.x2;
      int y2 = q.y2;
      int idx = q.idx;
      int cnt = lower_bound(switches[i].begin(), switches[i].end(), idx) -
                switches[i].begin();
      if (cnt % 2 == 1) continue;
      ans[idx] +=
          sum(x2, y2) - sum(x1 - 1, y2) - sum(x2, y1 - 1) + sum(x1 - 1, y1 - 1);
    }
    for (auto cell : garlands[i]) {
      int x = cell.second.first;
      int y = cell.second.second;
      int val = cell.first;
      update(x, y, -val);
    }
  }
  for (auto q : queries) printf("%I64d\n", ans[q.idx]);
  return 0;
}
