#include <bits/stdc++.h>
using namespace std;
template <typename C>
void ma(C& a, C b) {
  if (a < b) a = b;
}
template <typename C>
void mi(C& a, C b) {
  if (a > b) a = b;
}
int n, m, q;
long long war[100010];
long long wars[100010];
long long dods[100010];
long long il[100010];
vector<int> dt[100010], ds[100010];
vector<pair<int, int> > dd[100010];
const int C = 400;
void lacz(int a, int b, int k) {
  if (dd[a].size() + dt[a].size() < dd[b].size() + dt[b].size()) {
    dd[a].push_back(make_pair(b, k));
  } else {
    dd[b].push_back(make_pair(a, k));
  }
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 0; i < n; i++) scanf("%I64d", &war[i]);
  for (int i = 0; i < m; i++) {
    int _;
    scanf("%d", &_);
    while (_--) {
      int pom;
      scanf("%d", &pom);
      pom--;
      ds[pom].push_back(i);
    }
  }
  vector<pair<int, int> > vpom;
  for (int pom = 0; pom < n; pom++) {
    if (ds[pom].size() > C) {
      for (int i = 0; i < ds[pom].size(); i++) dt[ds[pom][i]].push_back(pom);
    } else {
      for (int i = 0; i < ds[pom].size(); i++) {
        il[ds[pom][i]]++;
        wars[ds[pom][i]] += war[pom];
        for (int j = i + 1; j < ds[pom].size(); j++) {
          vpom.push_back(make_pair(ds[pom][i], ds[pom][j]));
        }
      }
    }
  }
  sort(vpom.begin(), vpom.end());
  for (int i = 0; i < vpom.size(); i++) {
    int k = 1;
    while (k + i < vpom.size() && vpom[i] == vpom[i + k]) k++;
    lacz(vpom[i].first, vpom[i].second, k);
    i += k - 1;
  }
  while (q--) {
    char z;
    int k;
    scanf(" %c%d", &z, &k);
    k--;
    if (z == '?') {
      long long sum = wars[k];
      for (int i = 0; i < dt[k].size(); i++) sum += war[dt[k][i]];
      for (int i = 0; i < dd[k].size(); i++) {
        sum += dods[dd[k][i].first] * dd[k][i].second;
      }
      printf("%I64d\n", sum);
    } else {
      long long x;
      scanf("%I64d", &x);
      dods[k] += x;
      wars[k] += x * il[k];
      for (int i = 0; i < dt[k].size(); i++) war[dt[k][i]] += x;
      for (int i = 0; i < dd[k].size(); i++) {
        wars[dd[k][i].first] += x * dd[k][i].second;
      }
    }
  }
}
