Page not loading? Try clicking here.
Placeholder

#3239

구간의 최소값 2s 256MB

Problems

주어진 수열에 대하여 다음 3가지 명령을 수행하는 프로그램을 작성하시오.

 

* 1 k val : 수열의 k번 index에 값을 입력한다. 

이미 값이 입력되어 있다면  val로 수정한다.

​* 2 s e   : 수열의 [s, e]구간의 최소값을 갖는 index를 구하여 행으로 구분하여 출력한다.

같은 값을 갖는 index가 여러 개 있는 경우 index가 최소인 것을 출력한다.

출력할 대상이 없는 경우 출력하지 않는다.

​* 3 s e   : 수열의 [s, e]구간의 최소값을 갖는 index를 구하여 지운다.

같은 값을 갖는 index가 여러 개 있는 경우 index가 최소인 것을 지운다. 

지울 대상이 없는 경우 그대로 둔다.


Input

첫 행에 수열의 길이 N과 명령의 수 M이 입력된다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 300,000)

수열의 각 원소가 갖는 수의 범위는 -10억 ~ 10억 이다.

다음 M개의 행에 명령들이 주어진다.


Output

명령 2에 대한 출력결과를 행으로 구분하여 출력한다.

명령 2에 대하여 출력할 값이 없는 경우 출력하지 않는다.


Example #1

10 11

1 5 3
1 6 2
1 7 3
1 1 9
2 1 10
2 2 4
2 7 10
3 7 9
2 7 10
1 6 7
2 3 9
6

7
5

Example #2

7 10
3 1 4
3 1 4
2 5 7
1 7 -2
3 4 6
2 6 7
2 5 6
3 1 4
2 1 1
1 4 -2
7


Source

comkiwer

You must sign in to write code.