在傳統的 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