12299 - RMQ with Shifts

在傳統的 RMQ (Range Minimum Query) 問題中,我們有靜態的陣列 $A$,對於每次查詢 $(L,R)$ ($L\leq{R}$),我們回傳 $A[L],A[L+1],\cdots{},A[R]$ 之間的最小值。注意陣列的足標從 1 開始,例如陣列最左邊的元素就是 $A[1]$

在這個問題中,陣列 $A$ 不再是靜態的,我們需要支援另一個操作如下:

$shift(i_1,i_2,i_3,\cdots{},i_k)(i_1 < i_2 < \cdots{} < i_k, k > 1)$

 
代表對 $A[i_1],A[i_2],\cdots{},A[i_k]$ 做「左環形位移」(left circular shift)。

例如,如果 $A=\{6,2,4,8,5,1,4\}$,則 $shift(2,4,5,7)$ 會產生 $6,8,4,5,4,1,2$,若繼續做 $shift(1,2)$ 則會變成 $8,6,4,5,4,1,2$

Input

只有一筆測試資料,一開始有兩個整數 $n,q$ ($1\leq{n}\leq{100,000}$$1\leq{q}\leq{250,000}$),分別代表陣列 $A$ 的整數數量、和操作的數量。下一行有 $n$ 個不超過 $100,000$ 的整數,代表一開始 $A$ 當中的整數。接著 $q$ 行,每行有一長度不超過 30 的字串,並且沒有空白字元。所有的操作指令保證都是合法的。

注意 :測資很大,最好使用快速的 I/O 方法。

Output

對於每個查詢,印出範圍內的最小值。

Sample Input

7 5
6 2 4 8 5 1 4
query(3,7)
shift(2,4,5,7)
query(1,4)
shift(1,2)
query(2,2)

Sample Output

1
4
6