#include <bits/stdc++.h>
using namespace std;
const int MAXN = 131072;
const int BLOCK = 300;
int T[2 * MAXN][60];
int N;
void update(int node, int s, int e, int x, int a) {
  if (x < s || x >= e) return;
  if (s + 1 == e) {
    for (int i = 0; i < 60; i++) {
      T[node][i] = 1 + (i % a == 0);
    }
    return;
  }
  int m = (s + e) / 2;
  update(node << 1, s, m, x, a);
  update((node << 1) ^ 1, m, e, x, a);
  for (int i = 0; i < 60; i++) {
    int w = T[node << 1][i];
    T[node][i] = w + T[(node << 1) ^ 1][(i + w) % 60];
  }
}
int get(int node, int s, int e, int a, int b, int mod) {
  if (b <= s || e <= a) {
    return 0;
  }
  if (s >= a && e <= b) {
    return T[node][mod];
  }
  int m = (s + e) / 2;
  int d1 = get(node << 1, s, m, a, b, mod);
  int d2 = get((node << 1) ^ 1, m, e, a, b, (mod + d1) % 60);
  return d1 + d2;
}
int main() {
  cin >> N;
  for (int i = 0; i < N; i++) {
    int a;
    cin >> a;
    update(1, 0, MAXN, i, a);
  }
  int Q;
  cin >> Q;
  for (int i = 0; i < Q; i++) {
    char s[2];
    int a, b;
    cin >> s >> a >> b;
    if (s[0] == 'C') {
      update(1, 0, MAXN, a - 1, b);
    } else {
      cout << get(1, 0, MAXN, a - 1, b - 1, 0) << "\n";
    }
  }
}
