#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > g[2010];
pair<int, int> tab[2010][2010];
vector<int> t[2010];
long long sum[2010][2010], v[2010][2010], ans;
int n, m, k, len, q, x, y, xx, yy, i[2010][2010];
bool on[2010];
char s[10];
long long get(int x, int pocz, int kon) {
  if (pocz <= kon)
    return sum[x][kon] - sum[x][pocz - 1];
  else
    return 0;
}
bool in(int X, int Y) {
  if (X >= x && X <= xx && Y >= y && Y <= yy) return 1;
  return 0;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  scanf("%d%d%d", &n, &m, &k);
  for (int a = 1; a <= k; a++) on[a] = 1;
  for (int a = 1; a <= k; a++) {
    scanf("%d", &len);
    for (int b = 1; b <= len; b++) {
      scanf("%d%d", &x, &y);
      g[a].push_back(make_pair(x, y));
      tab[g[a][b - 1].first][g[a][b - 1].second] = make_pair(a, b);
      scanf("%lld", &v[a][b]);
      sum[a][b] = sum[a][b - 1] + v[a][b];
    }
  }
  scanf("%d", &q);
  for (int a = 1; a <= q; a++) {
    scanf("%s", &s);
    if (s[0] == 'S') {
      scanf("%d", &x);
      if (on[x])
        on[x] = 0;
      else
        on[x] = 1;
    } else {
      scanf("%d%d%d%d", &x, &y, &xx, &yy);
      ans = 0;
      for (int b = 1; b <= k; b++) t[b].clear();
      for (int b = y; b <= yy; b++) {
        if (i[tab[x][b].first][tab[x][b].second] != a)
          t[tab[x][b].first].push_back(tab[x][b].second),
              i[tab[x][b].first][tab[x][b].second] = a;
        if (i[tab[xx][b].first][tab[xx][b].second] != a)
          t[tab[xx][b].first].push_back(tab[xx][b].second),
              i[tab[xx][b].first][tab[xx][b].second] = a;
      }
      for (int b = x + 1; b < xx; b++) {
        if (i[tab[b][y].first][tab[b][y].second] != a)
          t[tab[b][y].first].push_back(tab[b][y].second),
              i[tab[b][y].first][tab[b][y].second] = a;
        if (i[tab[b][yy].first][tab[b][yy].second] != a)
          t[tab[b][yy].first].push_back(tab[b][yy].second),
              i[tab[b][yy].first][tab[b][yy].second] = a;
      }
      for (int b = 1; b <= k; b++) {
        if (on[b] == 0) continue;
        if (t[b].size() > 0) {
          sort(t[b].begin(), t[b].end());
          for (int c = 0; c < t[b].size(); c++) ans += get(b, t[b][c], t[b][c]);
          if (in(g[b][0].first, g[b][0].second)) ans += get(b, 1, t[b][0] - 1);
          if (in(g[b].back().first, g[b].back().second))
            ans += get(b, t[b].back() + 1, g[b].size());
          for (int c = 0; c + 1 < t[b].size(); c++)
            if (in(g[b][t[b][c]].first, g[b][t[b][c]].second))
              ans += get(b, t[b][c] + 1, t[b][c + 1] - 1);
        } else if (in(g[b][0].first, g[b][0].second))
          ans += sum[b][g[b].size()];
      }
      printf("%lld\n", ans);
    }
  }
  return 0;
}
