EduBrick

НОД на отрезке

2500 мс · 256 МБ · всё или ничего

Дан массив натуральных чисел. Запросы: наибольший общий делитель всех чисел на отрезке и присвоение элементу нового значения.

Проверьте функцию на пригодность: gcd⁡\gcd ассоциативен, gcd⁡(gcd⁡(a,b),c)=gcd⁡(a,gcd⁡(b,c))\gcd(\gcd(a,b),c) = \gcd(a,\gcd(b,c)) — значит в дерево ложится. Нейтральный элемент — ноль: gcd⁡(0,x)=x\gcd(0, x) = x.

Ноль в роли нейтрального смущает, но он правильный: ноль делится на всё, и наибольший общий делитель нуля и xx равен xx.

Формат ввода

В первой строке nn (1≤n≤1051 \le n \le 10^5). Во второй — nn чисел aia_i (1≤ai≤1091 \le a_i \le 10^9). В третьей — mm (1≤m≤1051 \le m \le 10^5). Далее mm строк: g l r — НОД на отрезке, u i x — присвоить ai=xa_i = x (1≤x≤1091 \le x \le 10^9).

Формат вывода

Для каждого запроса g выведите НОД на отдельной строке.

Примеры

ввод
5
6 12 18 5 10
3
g 1 3
g 4 5
g 1 5
вывод
6
5
1
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.