#include <bits/stdc++.h>
using namespace std;
const int inft = 1000000009;
const int MAXN = 1000006;
int SQRT, n;
int t[MAXN];
vector<vector<int> > V;
bool dirty[MAXN][60];
void update(int seg, int i) {
  int czas = i, j = seg * SQRT;
  while (j < min(n, (seg + 1) * SQRT)) {
    if (czas % t[j] != 0) j++;
    czas++;
  }
  V[seg][i] = czas - i;
}
int licz(int a, int b) {
  int czas = 0;
  while (a != b) {
    if (a % SQRT == 0 && a + SQRT <= b) {
      if (dirty[a / SQRT][czas % 60]) {
        dirty[a / SQRT][czas % 60] = false;
        update(a / SQRT, czas % 60);
      }
      czas += V[a / SQRT][czas % 60];
      a += SQRT;
    } else {
      if (czas % t[a] != 0) a++;
      czas++;
    }
  }
  return czas;
}
void solve() {
  scanf("%d", &n);
  for (int i = 0; i < (n); ++i) scanf("%d", &t[i]);
  SQRT = 0;
  while (SQRT * SQRT < n) SQRT++;
  V.resize(SQRT + 5, vector<int>(60, 0));
  for (int i = 0; i < (SQRT + 5); ++i)
    for (int j = 0; j < (60); ++j) update(i, j);
  if (0)
    for (int i = 0; i < (SQRT + 5); ++i) {
      printf("seg %d\n", i);
      for (int j = 0; j < (10); ++j) printf("%d ", V[i][j]);
      puts("");
    }
  int q;
  scanf("%d", &q);
  for (int i = 0; i < (q); ++i) {
    char c;
    int a, b;
    scanf(" %c%d%d", &c, &a, &b);
    if (c == 'A') {
      printf("%d\n", licz(a - 1, b - 1));
    } else {
      a--;
      t[a] = b;
      for (int j = 0; j < (60); ++j) dirty[a / SQRT][j] = true;
    }
  }
}
int main() {
  int t = 1;
  for (int i = 0; i < (t); ++i) solve();
  return 0;
}
