CF825G Tree Queries
Description
You are given a tree consisting of $n$ vertices (numbered from $1$ to $n$ ). Initially all vertices are white. You have to process $q$ queries of two different types:
1. $1$ $x$ — change the color of vertex $x$ to black. It is guaranteed that the first query will be of this type.
2. $2$ $x$ — for the vertex $x$ , find the minimum index $y$ such that the vertex with index $y$ belongs to the simple path from $x$ to some black vertex (a simple path never visits any vertex more than once).
For each query of type $2$ print the answer to it.
Note that the queries are given in modified way.
Input Format
The first line contains two numbers $n$ and $q$ ( $ 3\le n,q\le 10^{6} $ ).
Then $ n-1 $ lines follow, each line containing two numbers $ x_{i} $ and $ y_{i} $ ( $ 1\le x_i,y_{i}\le n $ ) and representing the edge between vertices $ x_{i} $ and $ y_{i} $ .
It is guaranteed that these edges form a tree.
Then $q$ lines follow. Each line contains two integers $t_i$ and $z_i$, where $t_i$ is the type of $i$ th query, and $z_i$ can be used to restore $x_i$ for this query in this way: you have to keep track of the answer to the last query of type $2$ (let's call this answer $last$, and initially $last=0$ ); then $x_i=(z_i+last)\bmod n+1$.
It is guaranteed that the first query is of type $1$, and there is at least one query of type $2$.
Output Format
For each query of type $2$ output the answer to it.