perm

Time limit: 0.05s Memory limit: 16MB Input: perm.in Output: perm.out

Fie nn un număr natural şi p=(p1,p2,,pn)p=(p_1, p_2, \dots, p_n) o permutare de ordin nn. Numim grad al unei permutări cel mai mic număr natural k>0k>0, astfel încât pk=pppp=ep^k = p \circ p \circ p \circ \dots \circ p = e (de kk ori), unde cu ee am notat permutare identică, deci permutarea pentru care e(i)=ie(i)=i, pentru orice i=1,2,,ni=1, 2, \dots, n.

Cerință

Pentru un nn dat, să se determine o permutare de ordin nn având grad maxim. Dacă există mai multe soluţii se va determina prima în ordine lexicografică.

Date de intrare

Fişierul de intrare perm.in conţine pe prima linie numărul natural nenul nn.

Date de ieșire

Fişierul de ieşire perm.out va conţine o singură linie pe care vor fi scrise nn numere naturale distincte cuprinse între 11 şi nn, separate prin câte un spaţiu, reprezentând prima permutare de grad maxim în ordine lexicografică.

Restricții și precizări

  • 1N2 0001 \leq N \leq 2 \ 000;
  • Prin operaţia \circ înţelegem compunerea funcţiilor. Mai exact pp(i)=p(p(i))p \circ p(i) = p(p(i)), pentru orice i=1,2,,ni=1, 2, \dots, n.

Exemplul 1

perm.in

5

perm.out

2 1 4 5 3

Explicație

Permutarea (2,1,4,5,3)(2, 1, 4, 5, 3) are gradul 66 (maxim posibil). Există şi alte soluţii, dar aceasta este cea mai mică din punct de vedere lexicografic.

Exemplul 2

perm.in

14

perm.out

2 3 1 5 6 7 4 9 10 11 12 13 14 8

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