この問題は、Segment Tree というデータ構造を用いて解くことができます。

具体的には以下のようにクエリを処理するとよいです。

まず、変数 l=1,r=1l = 1, r = 1 を用意します。

そして、

  • 11 のクエリ : Segment Tree の rr 番目の値を xx に置き換え、rr11 増加させる。
  • 22 のクエリ : Segment Tree の区間 [l,r)[l, r) の最大公約数を出力し、ll11 増加させる。

あらかじめ Segment Tree の要素数を十分に確保しなければならないことに注意してください。

よって、この問題を O(QlogQ)O(Q \log Q) で解くことができました。

また、SWAG (Sliding Window Aggregation) を用いて解くこともできます。(当初はこの解法が想定でした。)