만드는 중입니다

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

보안 점검

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

요약
연구소 중요도 변경, 경로 추가, 기준값 D 변경이 들어올 때마다 보안 등급 c 이하 경로로 연결된 연구소 묶음의 중요도 합이 D 이상이 되는 가장 작은 c를 구합니다.
난이도

어려움10점 중 8점

유형
유니온 파인드, 트리, 이분 탐색
정답자
아직 제출이 없습니다

문제

NN개의 연구소와 이를 잇는 경로들이 있습니다. 각 연구소에는 그 연구 내용이 얼마나 중요한지를 나타내는 중요도가 주어집니다. ii번 연구소의 중요도는 AiA_i입니다.

경로는 서로 다른 연구소 2개를 잇고, 경로마다 보안 레벨이 정해져 있습니다. 연구원의 보안 레벨이 경로의 보안 레벨 이상이면 연구원은 그 통로를 이용할 수 있습니다.

연구소에서 정보가 유출될 가능성에 대비해 시뮬레이션을 진행합니다. 보안 레벨 cc인 연구원이 ii번 연구소에 잠입해서 그곳에서 도달할 수 있는 모든 연구소의 중요도를 더한 값을 f(c,i)f(c, i)라 합니다. 보안 레벨 cc에 대한 위험도는 g(c)=max⁡{f(c,1),f(c,2),⋯ ,f(c,N)}g(c) = \max\{f(c, 1), f(c, 2), \cdots, f(c, N)\}으로 정의합니다. 이 시뮬레이션의 목표는 정보 유출자가 모은 중요도의 합이 보안 한계점 DD 이상이 되는 최소 보안 레벨을 구하는 것입니다. 즉, g(c)≥Dg(c) \geq D를 만족하는 최소 cc를 구합니다.

연구가 진전되어 중요도가 증가하거나, 새로운 경로가 만들어지거나, 보안이 엄격해져 보안 한계점이 감소할 수 있습니다. 이런 변화가 일어날 때마다 g(c)≥Dg(c) \geq D를 만족하는 최소 cc를 다시 구합니다.

쿼리는 다음과 같습니다.

  • 1 u v l: uu번 연구소와 vv번 연구소를 잇는 보안 레벨 ll의 경로를 추가합니다.
  • 2 k a: kk번 연구소의 중요도를 aa로 설정합니다. 이 쿼리에서 변경 전 kk번 연구소의 중요도는 aa 이하임이 보장됩니다.
  • 3 d: 보안 한계점을 dd로 변경합니다. 이 쿼리에서 변경 전 보안 한계점은 dd 이상임이 보장됩니다.
  • 4: g(c)≥Dg(c) \geq D를 만족하는 최소 cc를 출력합니다.

입력

첫 번째 줄에 연구소의 개수 NN, 경로의 개수 MM, 초기 보안 한계점 DD이 공백으로 구분되어 주어집니다.

두 번째 줄에 NN개의 정수 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 차례대로 공백으로 구분되어 주어집니다. AiA_i는 ii번 연구소의 중요도입니다.

세 번째 줄부터 MM개의 줄에 걸쳐 ii번째 경로를 나타내는 세 정수 sis_i, eie_i, lil_i가 공백으로 구분되어 주어집니다. 이는 sis_i번 연구소와 eie_i번 연구소를 잇는 보안 레벨 lil_i의 간선이라는 뜻입니다.

M+3M+3번째 줄에 쿼리의 개수 QQ가 주어집니다. 이후 QQ개의 줄에 쿼리가 한 줄에 하나씩 주어집니다. 2번 쿼리에서 중요도는 감소하지 않으며, 3번 쿼리에서 보안 한계점은 증가하지 않음이 보장됩니다.

출력

4번 쿼리의 결과를 쿼리의 입력 순서대로 한 줄에 하나씩 출력합니다. 모든 cc가 조건을 만족하면 −1-1을, 모든 cc가 조건을 만족하지 않으면 −2-2를 출력합니다.

제한

  • 주어지는 모든 수는 정수입니다.
  • 2≤N≤100 0002 \le N \le 100\,000
  • 0≤M≤150 0000 \le M \le 150\,000
  • 1≤D≤10181 \le D \le 10^{18}
  • 1≤Ai≤1 000 0001 \le A_i \le 1\,000\,000 (1≤i≤N1 \leq i \leq N)
  • 1≤si,ei≤N1 \le s_i, e_i \le N, si≠eis_i \neq e_i, 1≤li≤600 0001 \le l_i \le 600\,000 (1≤i≤M1 \leq i \leq M)
  • 1≤Q≤100 0001 \le Q \le 100\,000
  • 1≤u,v≤N1 \le u, v \le N, u≠vu \neq v, 1≤l≤600 0001 \le l \le 600\,000
  • 1≤k≤N1 \le k \le N, 1≤a≤1 000 0001 \le a \le 1\,000\,000
  • 1≤d≤10181 \le d \le 10^{18}
  • 2번 쿼리에서 중요도는 감소하지 않으며, 3번 쿼리에서 보안 한계점은 증가하지 않음이 보장됩니다.

예제1

  1. 예제 1

    입력
    5 3 10
    1 1 1 1 1
    1 2 5
    2 3 4
    4 5 2
    8
    2 1 8
    4
    2 2 9
    4
    1 1 4 2
    4
    3 9
    4
    
    예상 출력
    5
    4
    2
    -1