#include <bits/stdc++.h>
using namespace std;
vector<int> S[110000];
int n, m, q, i, j;
long long a[110000];
long long ans = 0;
vector<int> nums;
long long add[110000];
long long addd[110000];
int per[110000][500];
long long rez[110000];
int r;
int z[110000];
int IN[110000];
const int C = 300;
int main() {
  cin >> n >> m >> q;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= m; i++) {
    cin >> r;
    for (int j = 0; j < r; j++) {
      int x;
      cin >> x;
      S[i].push_back(x);
      rez[i] += a[x];
    }
    if (r > C) {
      nums.push_back(i);
      IN[i] = nums.size() - 1;
    }
  }
  for (int num = 0; num < nums.size(); num++) {
    int N = nums[num];
    for (int i = 0; i < S[N].size(); i++) {
      z[S[N][i]] = num + 1;
    }
    for (int i = 1; i <= m; i++) {
      for (int j = 0; j < S[i].size(); j++) {
        if (z[S[i][j]] == num + 1) per[i][num]++;
      }
    }
  }
  for (int tst = 0; tst < q; tst++) {
    string ch;
    cin >> ch;
    if (ch == "+") {
      int k;
      long long x;
      cin >> k >> x;
      if (S[k].size() <= C) {
        for (int j = 0; j < S[k].size(); j++) a[S[k][j]] += x;
        for (int j = 0; j < nums.size(); j++) add[nums[j]] += x * per[k][j];
      } else
        addd[k] += x;
    } else {
      int k;
      cin >> k;
      if (S[k].size() > C) {
        long long ans = 0;
        ans += add[k] + rez[k];
        for (int i = 0; i < nums.size(); i++) ans += addd[nums[i]] * per[k][i];
        cout << ans << endl;
      } else {
        long long ans = 0;
        for (int i = 0; i < S[k].size(); i++) {
          ans += a[S[k][i]];
        }
        for (int i = 0; i < nums.size(); i++) ans += addd[nums[i]] * per[k][i];
        cout << ans << endl;
      }
    }
  }
  return 0;
}
