Virtual contest is a way to take part in past contest, as close as possible to participation on time. It is supported only ACM-ICPC mode for virtual contests.
If you've seen these problems, a virtual contest is not for you - solve these problems in the archive.
If you just want to solve some problem from a contest, a virtual contest is not for you - solve this problem in the archive.
Never use someone else's code, read the tutorials or communicate with other person during a virtual contest.

No tag edit access

D. Traffic Jams in the Land

time limit per test

2 secondsmemory limit per test

256 megabytesinput

standard inputoutput

standard outputSome country consists of (*n* + 1) cities, located along a straight highway. Let's number the cities with consecutive integers from 1 to *n* + 1 in the order they occur along the highway. Thus, the cities are connected by *n* segments of the highway, the *i*-th segment connects cities number *i* and *i* + 1. Every segment of the highway is associated with a positive integer *a*_{i} > 1 — the period of traffic jams appearance on it.

In order to get from city *x* to city *y* (*x* < *y*), some drivers use the following tactics.

Initially the driver is in city *x* and the current time *t* equals zero. Until the driver arrives in city *y*, he perfors the following actions:

- if the current time
*t*is a multiple of*a*_{x}, then the segment of the highway number*x*is now having traffic problems and the driver stays in the current city for one unit of time (formally speaking, we assign*t*=*t*+ 1); - if the current time
*t*is not a multiple of*a*_{x}, then the segment of the highway number*x*is now clear and that's why the driver uses one unit of time to move to city*x*+ 1 (formally, we assign*t*=*t*+ 1 and*x*=*x*+ 1).

You are developing a new traffic control system. You want to consecutively process *q* queries of two types:

- determine the final value of time
*t*after the ride from city*x*to city*y*(*x*<*y*) assuming that we apply the tactics that is described above. Note that for each query*t*is being reset to 0. - replace the period of traffic jams appearing on the segment number
*x*by value*y*(formally, assign*a*_{x}=*y*).

Write a code that will effectively process the queries given above.

Input

The first line contains a single integer *n* (1 ≤ *n* ≤ 10^{5}) — the number of highway segments that connect the *n* + 1 cities.

The second line contains *n* integers *a*_{1}, *a*_{2}, ..., *a*_{n} (2 ≤ *a*_{i} ≤ 6) — the periods of traffic jams appearance on segments of the highway.

The next line contains a single integer *q* (1 ≤ *q* ≤ 10^{5}) — the number of queries to process.

The next *q* lines contain the descriptions of the queries in the format *c*, *x*, *y* (*c* — the query type).

If *c* is character 'A', then your task is to process a query of the first type. In this case the following constraints are satisfied: 1 ≤ *x* < *y* ≤ *n* + 1.

If *c* is character 'C', then you need to process a query of the second type. In such case, the following constraints are satisfied: 1 ≤ *x* ≤ *n*, 2 ≤ *y* ≤ 6.

Output

For each query of the first type output a single integer — the final value of time *t* after driving from city *x* to city *y*. Process the queries in the order in which they are given in the input.

Examples

Input

10

2 5 3 2 3 5 3 4 2 4

10

C 10 6

A 2 6

A 1 3

C 3 4

A 3 11

A 4 9

A 5 6

C 7 3

A 8 10

A 2 5

Output

5

3

14

6

2

4

4

Codeforces (c) Copyright 2010-2019 Mike Mirzayanov

The only programming contests Web 2.0 platform

Server time: Mar/24/2019 02:41:38 (d2).

Desktop version, switch to mobile version.

Supported by

User lists

Name |
---|