== include(page="template/taskheader" task_id="permutari") ==
O permutare de ordinul $N$ (numar natural nenul) este o functie bijectiva definita pe multimea {1, 2, ..., N} cu valori in ea insasi. O permutare de ordinul $N$ are numarul de ordine $A$ daca aceasta se afla pe pozitia $A$ in sirul ordonat lexicografic al permutarilor de ordinul [$N$].
O permutare de ordinul N (numar natural nenul) este o functie bijectiva definita pe multimea {1, 2, ..., N} cu valori in ea insasi.
Avand la dispozitie [$N$], $K$ si un sir $A(1), A(2), ..., A(K)$ sortat crescator (reprezentand numerele de ordine ale unor permutari distincte de ordinul [$N$]), scrieti un program care afiseaza imaginile acestor permutari.
Avand la dispozitie $N$ si un sir de 5 numere naturale nenule sortate crescator, reprezentand numerele de ordine a 5 permutari distincte din sirul ordonat lexicografic al permutarilor de ordinul [$N$], scrieti un program care afiseaza imaginile acestor 5 permutari.
In general, spunem ca sirul (x(1), x(2), ..., x(m)) este mai mic decat sirul (y(1), y(2), ..., y(n)) din punct de vedere lexicografic daca:
In general, spunem ca sirul (x(1), x(2), ..., x(m)) este mai mic decat sirul (y(1), y(2), ..., y(n)) din punct de vedere lexicografic daca
* exista k, $1 ≤ k ≤ min(m, n)$, astfel incat x(1) = y(1), x(2) = y(2), ..., x(k-1) = y(k-1) si x(k) < y(k)
exista k, $1 ≤ k ≤ min(m, n)$ , astfel incat x(1) = y(1), x(2) = y(2), ..., x(k-1) = y(k-1) si x(k) < y(k)
sau
* m < n si x(i) = y(i) pentru orice $1 ≤ i ≤ m$ (sirul x este un prefix al lui y).
m < n si x(i) = y(i) pentru orice $1 ≤ i ≤ m$ (sirul x este un prefix al lui y).
h2. Date de intrare
Fisierul de intrare $permutari.in$ va contine pe prima linie numerele naturale $N$ si [$K$], iar pe a doua linie valorile sirului $A(1), A(2), ..., A(K)$ separate prin cate un spatiu.
Fisierul de intrare $permutari.in$ contine un numar natural nenul N.
h2. Date de ieșire
Fisierul de ieșire $permutari.out$ va contine pe cate o linie, cele $K$ permutari de ordinul $N$ avand numerele de ordine cerute, in ordinea din fisierul de intrare. Numerele de pe fiecare linie a fisierului vor fi separate prin cate un spatiu.
Fisierul de ieșire $permutari.out$ va contine permutarile de ordinul N, cate una pe fiecare linie, in ordine lexicografica. Numerele de pe fiecare linie a fisierului vor fi separate prin cate un spatiu.
h2. Restricții
* $1 ≤ N ≤ 9$
* $1 ≤ K ≤ 5$
* $1 ≤ A(i) ≤ N!$, unde $1 ≤ i ≤ K$
* $3 ≤ N ≤ 9$
* $1 ≤ A ≤ N!$, unde A este numarul de ordine al uneia dintre permutarile cerute pentru afisare.
h2. Exemplu
table(example).
|_. permutari.in |_. permutari.out |
| 3 3
1 3 4
| 1 2 3
2 1 3
2 3 1
| 2
| 1 2
2 1
|