#include <bits/stdc++.h>
using namespace std;
const int _inf = 0xc0c0c0c0;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const long long _INF = 0xc0c0c0c0c0c0c0c0;
const long long mod = (int)1e9 + 7;
const long long inf = 1e17;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long ksm(long long a, long long b, long long mod) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = (ans * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return ans;
}
long long inv2(long long a, long long mod) { return ksm(a, mod - 2, mod); }
const int MAX_N = 200025;
long long s[MAX_N << 2], k[MAX_N], ks[MAX_N], arr[MAX_N], col[MAX_N << 2];
void up(int rt) { s[rt] = s[rt << 1] + s[rt << 1 | 1]; }
void build(int rt, int l, int r) {
  col[rt] = inf;
  if (l == r) {
    s[rt] = arr[l] - k[l - 1];
    return;
  }
  int mid = (l + r) >> 1;
  build(rt << 1, l, mid);
  build(rt << 1 | 1, mid + 1, r);
  up(rt);
}
void down(int rt, int l, int r) {
  if (col[rt] != inf) {
    int mid = (l + r) >> 1;
    col[rt << 1] = col[rt];
    col[rt << 1 | 1] = col[rt];
    s[rt << 1] = col[rt] * (mid - l + 1);
    s[rt << 1 | 1] = col[rt] * (r - mid);
    col[rt] = inf;
  }
}
void update(int rt, int l, int r, int x, int y, long long v) {
  if (x <= l && r <= y) {
    col[rt] = v;
    s[rt] = col[rt] * (r - l + 1);
    return;
  }
  int mid = (l + r) >> 1;
  down(rt, l, r);
  if (x <= mid) update(rt << 1, l, mid, x, y, v);
  if (mid < y) update(rt << 1 | 1, mid + 1, r, x, y, v);
  up(rt);
}
long long query(int rt, int l, int r, int x, int y) {
  if (x <= l && r <= y) {
    return s[rt];
  }
  int mid = (l + r) >> 1;
  long long res = 0;
  down(rt, l, r);
  if (x <= mid) res += query(rt << 1, l, mid, x, y);
  if (mid < y) res += query(rt << 1 | 1, mid + 1, r, x, y);
  return res;
}
int main() {
  int n, m, x, y;
  char str[5];
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%lld", &arr[i]);
  for (int i = 1; i < n; ++i) scanf("%lld", &k[i]);
  for (int i = 2; i < n; ++i) k[i] += k[i - 1];
  for (int i = 1; i < n; ++i) ks[i] = ks[i - 1] + k[i];
  build(1, 1, n);
  scanf("%d", &m);
  while (m--) {
    scanf("%s%d%d", str, &x, &y);
    if (str[0] == 's') {
      printf("%lld\n",
             query(1, 1, n, x, y) + ks[y - 1] - (x >= 2 ? ks[x - 2] : 0));
    } else {
      int l = 1, r = n, mid, ans_ = 1;
      long long sum = query(1, 1, n, x, x) + y;
      while (l <= r) {
        mid = (l + r) >> 1;
        if (sum > query(1, 1, n, mid, mid)) {
          ans_ = mid;
          l = mid + 1;
        } else
          r = mid - 1;
      }
      update(1, 1, n, x, ans_, sum);
    }
  }
  return 0;
}
