Počet bodov:
Program:  20b

Georg sa po desaťročnej zaoceánskej plavbe vrátil do svojej vily a zistil, že po celých desať rokov v nej nikto nevysával. Tak sa do toho hneď pustil a plný energie začal vysávať, čo mohol. Ale po chvíli si všimol, že si to mal lepšie naplánovať – vo svojom zápale povysával niektoré miesta viackrát a niektoré vôbec. Teraz potrebuje vašu pomoc.

Úloha

Georgova vila má \(n\) miestností a \(n-1\) chodieb. Každá chodba spája práve dve miestnosti, a medzi každými dvoma miestnosťami vedie práve jedna cesta.

Georg postupne robí \(q\) rôznych činností – buď vysáva, alebo premýšľa. Vysáva tak, že začne v miestnosti \(a\), ide do miestnosti \(b\), a cestou povysáva každú chodbu, ktorou prejde. Premýšľa tak, že príde do nejakej chodby a snaží sa spomenúť si, koľkokrát ju už povysával. S tým mu musíte pomôcť.

Formát vstupu a výstupu

Na prvom riadku sú čísla \(n\) a \(q\) (\(1\leq n,q \leq 100\,000\)) udávajúce počet miestností a počet činností. Miestnosti sú očíslované od \(1\) po \(n\).

Nasleduje \(n-1\) riadkov, ktoré popisujú chodby. Každý obsahuje dve čísla \(p,q\) udávajúce, že miestnosti \(p\) a \(q\) sú spojené chodbou.

Ďalších \(q\) riadkov jednotlivé popisuje činnosti. Na každom sú tri čísla \(t,x,y\). Aby sme zabezpečili, že činnosti naozaj vyhodnocujete v zadanom poradí, musíte ich najprv dekódovať: Nech \(v\) je posledné číslo, čo ste zatiaľ vypísali, alebo \(0\), ak ste zatiaľ nevypísali nič. Potom nech \(a=x \verb! xor ! v\), \(b=y \verb! xor ! v\).

Keď vypočítate \(a\) a \(b\), číslo \(t\) vám povie typ činnosti, čo máte spraviť. Platí \(1\leq a,b \leq n\) a \(a\neq b\). Ak je \(t=1\), Georg povysáva všetky chodby medzi miestnosťami \(a\) a \(b\) (nemusíte nič vypísať). Ak je \(t=2\), Georg príde do chodby medzi miestnosťami \(a\) a \(b\) (určite budú spojené chodbou) a chce, aby ste vypísali jedno číslo: počet, koľkokrát ju zatiaľ povysával. (Toto číslo bude nová hodnota \(v\).)

Príklad

Input:

6 7
2 4
1 2
4 6
4 5
3 2
2 4 5
1 6 1
1 4 3
1 2 6
2 4 2
1 0 5
2 1 0

Output:

0
3
2

Na predposlednom riadku je \(a=3,b=6\). Na poslednom riadku je \(a=2,b=3\).

Odovzdávanie

Na odovzdávanie sa musíš prihlásiť

Otázky a diskusia

Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.