Codecraft-17 and Codeforces Round 391 (Div. 1 + Div. 2, combined)
G
Can Bash Save the Day?
Codeforces
3400
原题
← F→
翻译中…

Whoa! You did a great job helping Team Rocket who managed to capture all the Pokemons sent by Bash. Meowth, part of Team Rocket, having already mastered the human language, now wants to become a master in programming as well. He agrees to free the Pokemons if Bash can answer his questions.

翻译中…

Initially, Meowth gives Bash a weighted tree containing $*n*$ nodes and a sequence $*a*_{1}, *a*_{2}..., *a*_{*n*}$ which is a permutation of $1, 2, ..., *n*$. Now, Mewoth makes $*q*$ queries of one of the following forms:

翻译中…
  • 1 l r v: meaning Bash should report image, where $*dist*(*a*, *b*)$ is the length of the shortest path from node $*a*$ to node $*b*$ in the given tree.
  • 2 x: meaning Bash should swap $*a*_{*x*}$ and $*a*_{*x* + 1}$ in the given sequence. This new sequence is used for later queries.
翻译中…

Help Bash to answer the questions!

翻译中…

Input

翻译中…

The first line contains two integers $*n*$ and $*q*$ ($1 ≤ *n* ≤ 2·10^{5}$, $1 ≤ *q* ≤ 2·10^{5}$) — the number of nodes in the tree and the number of queries, respectively.

翻译中…

The next line contains $*n*$ space-separated integers — the sequence $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$ which is a permutation of $1, 2, ..., *n*$.

翻译中…

Each of the next $*n* - 1$ lines contain three space-separated integers $*u*$, $*v*$, and $*w*$ denoting that there exists an undirected edge between node $*u*$ and node $*v*$ of weight $*w*$, ($1 ≤ *u*, *v* ≤ *n*$, $*u* ≠ *v*$, $1 ≤ *w* ≤ 10^{6}$). It is guaranteed that the given graph is a tree.

翻译中…

Each query consists of two lines. First line contains single integer $*t*$, indicating the type of the query. Next line contains the description of the query:

翻译中…
  • t = 1: Second line contains three integers $*a*$, $*b*$ and $*c*$ ($1 ≤ *a*, *b*, *c* < 2^{30}$) using which $*l*$, $*r*$ and $*v*$ can be generated using the formula given below:
  • image,
    • image,
    • image.
  • t = 2: Second line contains single integer $*a*$ ($1 ≤ *a* < 2^{30}$) using which $*x*$ can be generated using the formula given below:
  • image.
翻译中…

The $*ans*_{*i*}$ is the answer for the $*i*$-th query, assume that $*ans*_{0} = 0$. If the $*i*$-th query is of type 2 then $*ans*_{*i*}$ = $*ans*_{*i* - 1}$. It is guaranteed that:

翻译中…
  • for each query of type 1: $1 ≤ *l* ≤ *r* ≤ *n*$, $1 ≤ *v* ≤ *n*$,
  • for each query of type 2: $1 ≤ *x* ≤ *n* - 1$.
翻译中…

The image operation means bitwise exclusive OR.

翻译中…

Output

翻译中…

For each query of type $1$, output a single integer in a separate line, denoting the answer to the query.

翻译中…

Note

翻译中…

In the sample, the actual queries are the following:

翻译中…
  • 1 1 5 4
  • 1 1 3 3
  • 2 3
  • 2 2
  • 1 1 3 3
翻译中…

样例

Input #1
5 5
4 5 1 3 2
4 2 4
1 3 9
4 1 4
4 5 2
1
1 5 4
1
22 20 20
2
38
2
39
1
36 38 38
Output #1
23
37
28
InputCopy OutputCopy
题目信息
题号
757G
时间限制
5 s
内存限制
768 MB
标签
数据结构
分治
图论
树

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。