#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int rad = 300 + 10;
const int sq = 310;
vector<int> v[maxn];
vector<int> f;
long long int s[maxn];
long long int a[maxn];
inline void solve();
inline void solve2(int k, int x);
inline long long int solve3(int k);
inline void solve4(int k, int x);
inline void solve5();
long long int mp[sq][maxn];
long long int sum[maxn];
long long int ans[maxn];
long long int r[maxn];
vector<int> al[maxn];
int m;
int n;
int q;
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m >> q;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  int p = 0;
  for (int i = 0; i < m; i++) {
    cin >> s[i];
    for (int j = 0; j < s[i]; j++) {
      int l;
      cin >> l;
      v[i].push_back(l);
      if (s[i] > rad) {
        al[l].push_back(p);
      }
      sum[i] += a[l];
    }
    if (s[i] > rad) {
      p++;
    }
  }
  solve5();
  solve();
  for (int i = 0; i < q; i++) {
    char c;
    cin >> c;
    if (c == '?') {
      int k;
      cin >> k;
      k--;
      if (s[k] <= rad) {
        cout << solve3(k) << endl;
      } else {
        cout << sum[k] + ans[k] << endl;
      }
    } else {
      int k;
      int x;
      cin >> k >> x;
      k--;
      if (s[k] <= rad) {
        solve2(k, x);
      } else {
        solve4(k, x);
      }
    }
  }
  return 0;
}
inline void solve() {
  for (int i = 0; i < m; i++) {
    if (s[i] > rad) {
      f.push_back(i);
    }
  }
}
inline void solve2(int k, int x) {
  for (int i = 0; i < f.size(); i++) {
    ans[f[i]] += (1ll * mp[i][k] * x);
  }
  for (int i = 0; i < v[k].size(); i++) {
    a[v[k][i]] += x;
  }
  return;
}
inline long long int solve3(int k) {
  long long int res = 0;
  for (int i = 0; i < v[k].size(); i++) {
    res += a[v[k][i]];
  }
  for (int i = 0; i < f.size(); i++) {
    res += (1ll * mp[i][k] * r[f[i]]);
  }
  return res;
}
inline void solve4(int k, int x) {
  for (int i = 0; i < f.size(); i++) {
    ans[f[i]] += (1ll * mp[i][k] * x);
  }
  r[k] += x;
  return;
}
inline void solve5() {
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < s[i]; j++) {
      for (int g = 0; g < al[v[i][j]].size(); g++) {
        int o = al[v[i][j]][g];
        mp[o][i]++;
      }
    }
  }
  return;
}
