#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int n, q, a[N];
char s[2];
struct State {
  int w[60];
  friend State operator+(const State &state_l, const State &state_r) {
    State ret;
    for (int i = 0; i < 60; ++i)
      ret.w[i] = state_l.w[i] + state_r.w[(i + state_l.w[i]) % 60];
    return ret;
  }
} state[N << 2];
void build(int c, int l, int r) {
  if (l == r) {
    for (int j = 0; j < 60; ++j) state[c].w[j] = (j % a[l] == 0 ? 2 : 1);
    return;
  }
  int mid = l + r >> 1;
  build(c << 1, l, mid), build(c << 1 | 1, mid + 1, r);
  state[c] = state[c << 1] + state[c << 1 | 1];
}
void change(int c, int l, int r, int pos) {
  if (l == r) {
    for (int j = 0; j < 60; ++j) state[c].w[j] = (j % a[l] == 0 ? 2 : 1);
    return;
  }
  int mid = l + r >> 1;
  if (pos <= mid)
    change(c << 1, l, mid, pos);
  else
    change(c << 1 | 1, mid + 1, r, pos);
  state[c] = state[c << 1] + state[c << 1 | 1];
}
State query(int c, int l, int r, int L, int R) {
  if (l == L && r == R) return state[c];
  int mid = l + r >> 1;
  if (R <= mid)
    return query(c << 1, l, mid, L, R);
  else if (L > mid)
    return query(c << 1 | 1, mid + 1, r, L, R);
  return query(c << 1, l, mid, L, mid) +
         query(c << 1 | 1, mid + 1, r, mid + 1, R);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  build(1, 1, n);
  scanf("%d", &q);
  for (int i = 0, x, y; i < q; ++i) {
    scanf("%s %d %d", s, &x, &y);
    if (*s == 'C') {
      a[x] = y;
      change(1, 1, n, x);
    } else {
      if (x == y)
        puts("0");
      else
        printf("%d\n", query(1, 1, n, x, y - 1).w[0]);
    }
  }
  return 0;
}
