aranjare

Time limit: 0.1s Memory limit: 16MB Input: aranjare.in Output: aranjare.out

Toată lumea știe că Mirel are 2N2\cdot N sticluțe cu parfum așezate pe un raft cu 2N2\cdot N poziții, numerotate de la 11 la 2N2\cdot N. El are NN sticluțe cu parfum cumpărate din țară și alte NN sticluțe cu parfum cumpărate din Franța. Sticluțele cumpărate din țară sunt etichetate cu r1r_1, r2r_2, r3r_3, ..., rNr_N, iar sticluțele cumpărate din Franța sunt etichetate cu f1f_1, f2f_2, f3f_3, ..., fNf_N. Fiecare sticluță are asociată valoarea cu care a fost cumpărată.

Inițial, Mirel are așezate pe primele NN poziții sticluțele cumpărate din țară sortate crescător după valoare, iar pe următoarele NN poziții sticluțele cumpărate din Franța sortate tot crescător după valoare. Astfel, cele 2N2\cdot N sticluțe cu parfum sunt așezate în felul următor: [r1,r2,r3,,rN,f1,f2,f3,,fN][r_1, r_2, r_3, \ldots, r_N, f_1, f_2, f_3, \ldots, f_N]. Mai exact, sticluța rir_i se află pe poziția ii, iar sticluța fif_i se află pe poziția N+iN+i, pentru ii din intervalul [1,N][1, N].

Prietenul său cel mai bun, Marian, s-a gândit să-i facă o surprinză şi să-i schimbe aranjarea sticluţelor cu parfum în următoarea ordine: [r1,f1,r2,f2,r3,f3,,rN,fN][r_1, f_1, r_2, f_2, r_3, f_3, \ldots, r_N, f_N]. Cum Marian are două mâini, el poate face numai următorul tip de operaţie: ia două sticluţe cu parfum de pe raft (de pe două poziţii diferite) şi le interschimbă.

Cerință

Dându-se numărul NN, şi 2N2 \cdot N valori reprezentând valoarea fiecărei sticluţe cu parfum, ajutaţi-l pe Marian să facă operaţiile necesare pentru a schimba ordinea sticluţelor cu parfum în ordinea precizată în enunţ.

Date de intrare

Fișierul de intrare aranjare.in conține pe prima linie numărul NN, iar pe următoarea linie 2N2\cdot N numere naturale, separate prin câte un spaţiu. Primele NN numere reprezintă valorile sticluţelor cumpărate din ţară, iar următoarele NN numere reprezintă valorile sticluţelor cumpărate din Franţa. Atât primele NN, cât şi ultimele NN numere sunt sortate crescător în funcţie de valoare.

Date de ieșire

Fișierul de ieșire aranjare.out va conţine mai multe linii. Pe fiecare linie se vor afla două numere diferite xx şi yy din intervalul [1,2N][1, 2\cdot N], semnificând faptul că Marian trebuie să interschimbe sticluţa de pe poziţia xx cu sticluţa de pe poziţia yy.

Restricții și precizări

  • 2N100 0002 \leq N \leq 100\ 000
  • Dacă există mai multe soluţii, se poate afişa oricare dintre ele.
  • Soluţia nu trebuie să facă neapărat numărul minim de operaţii.
  • Pentru 15%15\% din teste se garantează că N13N \leq 13.
  • Pentru alte 25%25\% din teste se garantează că N300N \leq 300.
  • Pentru alte 30%30\% din teste se garantează că N1 000N \leq 1\ 000.

Exemplu

aranjare.in

3
1 3 5 2 3 5

aranjare.out

2 4
3 5
3 4

Explicație

În explicaţia de mai jos, fiecare sticluţă are numele etichetei urmat de valoarea ei în paranteză.
Şirul iniţial este: [r1(1),r2(3),r3(5),f1(2),f2(3),f3(5)][r_1(1), r_2(3), r_3(5), f_1(2), f_2(3), f_3(5)].
După prima mutare devine: [r1(1),f1(2),r3(5),r2(3),f2(3),f3(5)][r_1(1), f_1(2), r_3(5), r_2(3), f_2(3), f_3(5)].
După a doua mutare devine: [r1(1),f1(2),f2(3),r2(3),r3(5),f3(5)][r_1(1), f_1(2), f_2(3), r_2(3), r_3(5), f_3(5)].
După ultima mutare devine: [r1(1),f1(2),r2(3),f2(3),r3(5),f3(5)][r_1(1), f_1(2), r_2(3), f_2(3), r_3(5), f_3(5)].

Log in or sign up to be able to send submissions!