Sie haben ein Array mit n Elementen sowie q Anfragen. Es gibt zwei Arten von Anfragen: Zum einen wird der größte gemeinsame Teiler (Greatest Common Divisor, GCD) in einem bestimmten Indexbereich berechnet, zum anderen können Sie ein Element an einer angegebenen Position aktualisieren. Ihre Aufgabe besteht darin, diese Anfragen möglichst effizient zu verarbeiten.
Eingabe
Die erste Zeile der Eingabe enthält zwei ganze Zahlen n und q (1 ≤ n, q ≤ 100 000). Sie geben an, wie viele Elemente sich im Array befinden und wie viele Anfragen gestellt werden.
Die zweite Zeile enthält n durch Leerzeichen getrennte ganze Zahlen (). Diese Werte bilden die Ausgangselemente des Arrays.
Die folgenden q Zeilen beschreiben die Anfragen im Detail:
For range GCD queries: The line starts with the number 1 followed by two integers and (), representing the range of indices [] for which the GCD needs to be calculated.
For array update queries: The line starts with the number 2 followed by two integers and (), representing the index of the element to be updated and its new value .
Ausgabe
Geben Sie für jede Bereichs-GGT-Anfrage den Wert des berechneten GCD auf einer eigenen Zeile aus.