YAPP

Time limit: 2s Memory limit: 256MB Input: Output:

Cerință

Se dă o permutare p1,p2,…,pnp_1, p_2, \ldots, p_n. Într-o secundă se pot efectua oricâte interschimbări, cu condiția ca fiecare poziție să participe la cel mult una dintre ele. Interschimbarea (i,j)(i, j) schimbă între ele valorile de pe pozițiile ii și jj. Să se sorteze permutarea într-un număr minim de secunde.

Date de intrare

Pe prima linie se găsește un număr natural nn. Pe a doua linie se găsesc nn numere naturale, p1,p2,…,pnp_1, p_2, \ldots, p_n.

Date de ieșire

Pe prima linie se va găsi un număr natural kk, numărul minim de secunde. Urmează cele kk secunde, în ordine. Pentru fiecare secundă se va afișa o linie cu numărul mm de interschimbări efectuate în acea secundă, urmată de mm linii, fiecare conținând două poziții ii și jj.

Restricții și precizări

  • 1≤n≤200 0001 \leq n \leq 200 \ 000;
  • pp este o permutare a numerelor 1,2,…,n1, 2, \ldots, n;
  • Dacă există mai multe soluții, se poate afișa oricare.
# Punctaj Restricții
0 0 Exemple
1 40 nn este par și p=2,1,4,3,…,n,n−1p = 2, 1, 4, 3, \ldots, n, n - 1
2 30 Fiecare ciclu†^\dagger al permutării are lungimea cel mult 33
3 30 Fără restricții suplimentare

†^\dagger Un ciclu al permutării este un șir de poziții distincte i1,i2,…,iki_1, i_2, \ldots, i_k cu proprietatea că pi1=i2p_{i_1} = i_2, pi2=i3p_{i_2} = i_3, …\ldots, pik−1=ikp_{i_{k-1}} = i_k și pik=i1p_{i_k} = i_1. Numărul kk este lungimea ciclului. Fiecare poziție face parte din exact un ciclu; de exemplu, permutarea 2,3,1,5,42, 3, 1, 5, 4 are ciclurile (1,2,3)(1, 2, 3) și (4,5)(4, 5), iar o poziție ii cu pi=ip_i = i formează singură un ciclu de lungime 11.

Exemplul 1

stdin

5
2 3 1 5 4

stdout

2
2
2 3
4 5
1
1 2

Explicație

După prima secundă permutarea devine 2,1,3,4,52, 1, 3, 4, 5, iar după a doua devine 1,2,3,4,51, 2, 3, 4, 5.

Exemplul 2

stdin

3
1 2 3

stdout

0

Explicație

Permutarea este deja sortată.

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