#include <bits/stdc++.h>
using namespace std;
int T[66][4 * 100100];
void update(int init, int fim, int p, int pos, int val) {
  if (init > pos || fim < pos) return;
  if (init == fim) {
    for (int i = 0; i < 60; i++) {
      if (i % val == 0)
        T[i][p] = 2;
      else
        T[i][p] = 1;
    }
    return;
  }
  int mid = (init + fim) / 2;
  update(init, mid, 2 * p, pos, val);
  update(mid + 1, fim, 2 * p + 1, pos, val);
  for (int i = 0; i < 60; i++)
    T[i][p] = T[i][2 * p] + T[(i + T[i][2 * p]) % 60][2 * p + 1];
}
int ans;
void query(int init, int fim, int p, int x, int y) {
  if (init > y || fim < x) return;
  if (init >= x && fim <= y) {
    ;
    ans += T[ans % 60][p];
    return;
  }
  int mid = (init + fim) / 2;
  query(init, mid, 2 * p, x, y);
  query(mid + 1, fim, 2 * p + 1, x, y);
}
int main() {
  int n, q;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    int u;
    scanf("%d", &u);
    update(0, n - 1, 1, i, u);
  }
  scanf("%d", &q);
  while (q--) {
    char ch;
    scanf(" %c", &ch);
    if (ch == 'A') {
      int x, y;
      scanf("%d%d", &x, &y), x--, y -= 2;
      ans = 0;
      query(0, n - 1, 1, x, y);
      printf("%d\n", ans);
    } else {
      int x, y;
      scanf("%d%d", &x, &y), x--;
      update(0, n - 1, 1, x, y);
    }
  }
}
