În timp ce făcea curat în Muzeul de Artă Modernă, Henry a găsit o sculptură formată din bile numerotate cu numere naturale distincte de la la , ataşate între ele prin bare. Perspicace, Henry a realizat că sculptura reprezintă un arbore binar care are următoarele proprietăţi:
- Cu excepția bilei aflate în vârful sculpturii (care este ataşată de tavan), fiecare bilă este ataşată printr-o bară de o altă bilă aflată deasupra ei. Astfel, vom spune că este părintele lui .
- Fiecare bilă poate avea maxim bile care se ataşează sub ea: opțional una spre stânga (fiul stâng) şi opțional una spre dreapta (fiul drept).
- Dacă o bilă este numerotată cu un număr natural , atunci toate bilele care sunt ataşate de ea, direct sau indirect prin bara dinspre stânga (subarborele stâng) sunt numerotate cu valori mai mici decât , iar toate bilelele ataşate de ea, direct sau indirect prin bara dinspre dreapta (subarborele drept) sunt numerotate cu valori mai mari decât .
Ca parte a noilor facilităţi interactive ale muzeului, lângă sculptură se află o machetă mobilă a acesteia, formată tot din bile numerotate de la la , ataşate între ele prin bare. Deşi bilele ce formează macheta sunt conectate diferit, aceasta respectă aceleaşi reguli (, și ) ca şi sculptura.
Deoarece a terminat curăţenia, Henry se gândeşte acum să modifice unele conexiuni din machetă, astfel încât aceasta să aibă aceeaşi formă ca şi sculptura (cu alte cuvinte, pentru fiecare , , fiecare bilă numerotată cu din machetă să fie conectată cu bile având exact aceleași numerotări ca ale bilelor conectate cu bila din sculptură). Ca să facă lucrurile mai interesante, Henry se gândeşte să folosească doar două operaţii pentru a reaşeza macheta:
- Rotaţia spre dreapta în jurul bilei numerotate cu : pentru două bile și , părintele (care poate exista sau nu) al bilei şi subarborii , și (care pot exista sau nu) conectaţi ca în figura 1, se refac legăturile astfel încât şi să fie conectaţi ca în figura 2.
- Rotaţia spre stânga în jurul bilei numerotate cu : pentru două bile și , părintele (care poate exista sau nu) al bilei şi subarborii , și (care pot exista sau nu) conectaţi ca în figura 2, se refac legăturile astfel încât şi să fie conectaţi ca în figura 1.
Pentru orice tip de rotaţie, toate celelalte legături între bilele machetei rămân neschimbate. La o privire atentă, se observă că după orice operaţie de rotaţie, macheta respectă în continuare regulile , şi .
Deoarece Henry nu se pricepe cu adevărat decât la curăţenie, vă roagă pe voi să găsiţi o serie de rotaţii care aduc macheta la aceeaşi formă ca şi sculptura.
Date de intrare
Pe prima linie a fișierului de intrare rotatii.in
se va găsi un număr natural , reprezentând numărul de bile ce compun sculptura. Pe următoarele linii se va găsi descrierea machetei. Astfel, pentru fiecare , , pe linia se vor găsi câte două numere naturale separate printr-un spațiu , , reprezentând fiul stâng, respectiv fiul drept al bilei etichetate cu din machetă ( și/sau pot fi în cazul în care bila nu are fiul corespunzător). În mod similar cu descrierea machetei, pe următoarele linii se va găsi descrierea sculpturii. Astfel, pentru fiecare , , pe linia se vor găsi câte două numere naturale separate printr-un spațiu , reprezentând fiul stâng, respectiv fiul drept al bilei etichetată cu din sculptură ( și/sau pot fi în cazul în care bila nu are fiul corespunzător).
Date de ieșire
Pe prima linie a fișierului de ieșire rotatii.out
se va afișa un număr , reprezentând numărul de rotații necesare pentru a aduce macheta la aceeași formă ca și sculptura. Pe următoarele linii se vor afișa, în ordine, operațiile efectuate, sub forma:
- , semnificând ca se efectuează o rotație spre dreapta în jurul bilei din machetă (vezi figura);
- , semnificând ca se efectuează o rotație spre stânga în jurul bilei din machetă (vezi figura).
Între şi , respectiv şi se va afla afişa exact un spaţiu.
Restricții și precizări
- nu trebuie neaparat să fie minim.
- Pentru din teste,
- Se vor acorda din punctele pentru un test dacă operațiile afișate în fișierul de ieșire aduc macheta la forma sculpturii, iar programul rulează în limitele de timp și memorie indicate, dar .
- Se vor acorda din punctele pentru un test dacă, în plus, .
Exemplu
rotatii.in
5
0 0
1 3
0 0
2 5
0 0
0 0
1 5
0 0
3 0
4 0
rotatii.out
2
1 4
2 4
Explicații
Se va efectua întâi o rotaţie spre dreapta în jurul lui , apoi o rotaţie spre stânga în jurul lui , după cum se poate vedea în figură