만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수열과 장난

시간 제한3초메모리 제한1024 MB

요약
배열에서 원소 삭제, 구간에 최솟값 빼기와 최댓값 더하기 갱신을 처리하고, 부분 배열의 서로 다른 세 번째로 큰 값을 구합니다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 구현, 정렬
정답자
아직 제출이 없습니다

문제

"음 심심한걸? 어디 장난칠 대상이 없나?"

"오 저기 마침 수열이 보이네? 한 번 재밌게 만들어 보자!"

출제자의 레이더에 걸려버린 우리의 친구, 수열 AA.

출제자의 레이더에 걸린 모든 것은 제 모습을 찾기 힘들다고 전해진다... 이번엔 AA가 걸려버렸으니...

출제자는 악행으로 유명해서 어떤 장난을 치는지, 어떤 순서로 치는지도 전부 알려져 있다.

출제자는 다음과 같은 3가지 방법으로 장난을 친다.

  • 1 ii: ii번째에 있는 수를 제거한다. 이 수를 제거하면 AA의 원소들의 인덱스가 바뀔 수 있다.
  • 2 ii rr: 앞에서부터 i−ri-r번째부터 i+ri+r번째까지의 모든 수에서, 그 구간에 있는 수 중 최솟값을 뺀다.
  • 3 ii rr: 앞에서부터 i−ri-r번째부터 i+ri+r번째까지의 모든 수에, 그 구간에 있는 수 중 최댓값을 더한다.

출제자는 장난을 치면서 궁금증이 생겼다. 다음과 같이 AA의 범위를 말해주면 우리의 수열은 3번째로 큰 수를 알려줘야 한다.

  • 4 ll rr: 앞에서부터 ll번째부터 rr번째까지의 범위를 말해준다. 그러면 AlA_l, Al+1A_{l+1}, ..., ArA_r 원소 중 3번째로 큰 값을 알려준다. 단, 같은 수는 하나로 세고, 3번째로 큰 수가 존재하지 않으면 -1을 대답한다.

입력

첫 번째 줄에 AA가 장난을 당하기 전의 길이 NN (5≤N≤500 0005 \le N \le 500\,000)이 주어진다.

두 번째 줄에 장난을 당하기 전의 수열 AA가 주어진다. AA의 원소는 10910^{9} 이하의 양의 정수이다.

세 번째 줄에 장난의 횟수와 AA를 궁금해하는 횟수를 합한 값 QQ (3≤Q≤300 0003 \le Q \le 300\,000)가 주어진다.

네 번째 줄부터 QQ개의 줄에 장난의 종류와 위치, 또는 출제자가 궁금해하는 AA의 범위가 한 줄에 하나씩 주어진다.

1번 장난으로 수열의 길이가 0이 되지 않는다. 2번과 3번 장난에서 rr은 음이 아닌 정수이고, i−ri-r은 1 이상이며, i+ri+r은 장난을 칠 때의 수열 길이를 넘지 않는다. 3번 장난으로 증가한 수열의 원소는 263−12^{63}-1 이하이다. 출제자는 적어도 한 번은 궁금해한다.

출력

출제자가 궁금해할 때마다 정답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    9
    4 3 10 2 8 1 9 6 5
    7
    2 6 0
    4 2 5
    3 5 1
    2 4 1
    1 4
    3 5 2
    4 1 7
    
    예상 출력
    3
    15