만드는 중입니다

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

바나나

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

요약
매일 현재 마을에서 통행료 합을 뺀 수익이 가장 큰 마을로 이동할 때, 각 변경 뒤에 그가 묵는 마을 번호를 구합니다.
난이도

어려움10점 중 10점

유형
트리, 그래프, 분할 정복
정답자
아직 제출이 없습니다

문제

상인 바이타자르는 비토시아에서 바나나를 파는 사람이다. 그는 자신의 밴을 몰고 장사한다. 매일 아침 전날 밤을 보낸 도시를 떠나 다른 도시로 간다. 그곳에서 하루 종일 맛있는 과일을 팔고, 마지막에는 그 도시에 머물러 밤을 보낸다. 평생 이렇게 산다...

비토시아에는 1번부터 nn번까지 번호가 붙은 nn개의 도시가 있고, 도시들은 양방향 도로로 연결되어 있다. 어떤 두 도시든 정확히 한 가지 방법으로 오갈 수 있으며, 그 사이에 다른 도시를 거쳐야 할 수도 있다. 도로마다 통행료가 정해져 있고, 지날 때마다 그 금액을 낸다. 통행료는 1부터 101210^{12} 사이의 정수 바이톨라르다. 도시마다 하루 동안 바나나를 팔아서 얻는 수익도 정해져 있다. 수익은 1부터 101810^{18} 사이의 정수다. 흥미롭게도 매일 새벽 가격 정보 하나가 바뀐다. 바뀌는 것은 도로 하나의 통행료이거나 도시 하나의 판매 수익이다.

첫날 밤 바이타자르는 1번 도시에서 잔다. 매일 그는 전날 머문 도시와 다른 도시 하나를 골라 그곳까지 간다(중간에 다른 도시를 지나도 된다). 그날의 총 수익이 가장 크도록 도시를 고른다. 이 최대 총 수익은 음수일 수도 있다. 최대 수익을 주는 도시가 여럿이면 번호가 가장 작은 도시를 고른다.

앞으로 qq일 동안의 가격 변경 내역을 모두 알고 있다. 각 날 밤 바이타자르가 자는 도시를 구하라.

입력

첫 줄에 정수 nn과 qq가 주어진다(2≤n≤1000002 \le n \le 100000, 1≤q≤1000001 \le q \le 100000). 다음 줄에는 nn개의 정수 z1,z2,...,znz_1, z_2, ..., z_n이 주어진다. ziz_i는 도시 ii에서 바나나를 팔아 얻는 수익이다(1≤zi≤10181 \le z_i \le 10^{18}). 이어지는 n−1n-1개의 줄은 도로를 나타낸다. 각 줄에는 aia_i, bib_i, cic_i가 주어지며, 도시 aia_i와 bib_i가 통행료 cic_i인 도로로 연결되어 있다는 뜻이다(1≤ai,bi≤n1 \le a_i, b_i \le n, 1≤ci≤10121 \le c_i \le 10^{12}).

그 다음 qq개의 줄에 매일 새벽의 가격 변경이 주어진다. 각 줄은 다음 둘 중 하나다.

  • 1 v d (1≤v≤n1 \le v \le n, 1≤d≤10181 \le d \le 10^{18}): 그날 새벽부터 도시 vv에서 바나나를 팔아 얻는 수익이 dd가 된다.
  • 2 a b d (1≤a,b≤n1 \le a, b \le n, 1≤d≤10121 \le d \le 10^{12}): 그날 새벽부터 도시 aa와 bb를 잇는 도로의 통행료가 dd가 된다.

출력

qq개의 정수를 한 줄에 공백으로 구분해 출력한다. ii번째 정수는 ii번째 변경이 적용된 뒤 바이타자르가 밤을 보내는 도시 번호다.

예제1

  1. 예제 1

    입력
    4 4
    10 20 30 50
    1 2 5
    2 3 7
    2 4 57
    1 3 28
    1 1 25
    2 3 2 1
    2 2 4 13
    
    예상 출력
    3 1 3 4