program wardrobe3;
Uses Strutils;
const MAX = 5000000;
type elenco = array[1..MAX] of string[1];
var m,k,i,PP, z :qword;
numero, count : qword;
cod : longint;
cifre, X, stringadainvertire, stringainvertita, stringaordinata, Sconinv : Ansistring;
ccifre : array[1..MAX] of integer;
potenzadieci : array [0..MAX] of qword;
arrnum, P :array [1..MAX] of string[1];
w:char;
procedure scambia (var x,y: string);
var t:string;
begin
t:=x;
x:=y;
y:=t;
end;
procedure scambiach (var x,y: char);
var t:char;
begin
t:=x;
x:=y;
y:=t;
end;
Procedure ordinamento (estremoi,estremos: qword; var v : elenco; ordinato:boolean);
var inf, sup, medio:qword;
pivot :string[1];
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
end;
Procedure inversione (x:Ansistring; inizio:qword; var Sconinv:ansistring);
var Sdainv,Sprefix : ansistring;
begin
count:=m-inizio+1; Sprefix:='';
Sdainv:=copy(x,inizio, count);
Sprefix:=copy(x, 1, inizio-1);
stringainvertita:=ReverseString(Sdainv);
Sconinv:=Sprefix+stringainvertita;
end;
Procedure nextPermutation (var P : ansistring) ;
var pivot:qword;
(* Find the pivot index*)
begin
pivot := 0;
for i := m - 1 downto 1 do
if (P[i] < P[i + 1]) then begin pivot:=i; break; end;
writeln(pivot);
if pivot = 0 then exit;
(* find the element from the right that is greater than pivot*)
for i := m downto pivot+1 do
begin
if (P[i] > P[pivot]) then scambiach (P[i], P[pivot]);
writeln(P);
break;
end;
(* Reverse the elements from pivot + 1 to the end to get the next permutation*)
if pivot+1=m then begin Sconinv:=P; writeln('VV',Sconinv); end
else inversione (P, pivot+1, Sconinv);
end;
begin
readln(m,k);
readln(cifre);
(* X:=ReverseString(cifre); writeln (X);*)
for i:=1 to m do arrnum[i]:=copy(cifre,i,1);
ordinamento (1,m,arrnum, true);
stringaordinata:=''; Sconinv:='';
for i:=1 to m do stringaordinata:=stringaordinata+arrnum[i];
(*val(cifre,numero,cod);
writeln (numero);
inversione (cifre, 3, stringainvertita);
writeln(stringainvertita);*)
stringadainvertire:=stringaordinata;
for i:=1 to m do write(arrnum[i]); writeln('oo');
for z:=1 to 6 do begin nextPermutation(stringadainvertire); stringadainvertire:=Sconinv; writeln('cicl',Sconinv); end;
end.
cHJvZ3JhbSB3YXJkcm9iZTM7ClVzZXMgU3RydXRpbHM7CmNvbnN0IE1BWCA9IDUwMDAwMDA7CnR5cGUgZWxlbmNvID0gYXJyYXlbMS4uTUFYXSBvZiBzdHJpbmdbMV07CnZhciBtLGssaSxQUCwgeiA6cXdvcmQ7CiAgICBudW1lcm8sIGNvdW50IDogcXdvcmQ7CiAgICBjb2QgOiBsb25naW50OwogICAgY2lmcmUsIFgsIHN0cmluZ2FkYWludmVydGlyZSwgc3RyaW5nYWludmVydGl0YSwgc3RyaW5nYW9yZGluYXRhLCBTY29uaW52IDogQW5zaXN0cmluZzsKICAgIGNjaWZyZSA6IGFycmF5WzEuLk1BWF0gb2YgaW50ZWdlcjsKICAgIHBvdGVuemFkaWVjaSA6IGFycmF5IFswLi5NQVhdIG9mIHF3b3JkOwogICAgYXJybnVtLCBQIDphcnJheSBbMS4uTUFYXSBvZiAgc3RyaW5nWzFdOwogICAgdzpjaGFyOwogICAgCnByb2NlZHVyZSBzY2FtYmlhICh2YXIgeCx5OiBzdHJpbmcpOwp2YXIgdDpzdHJpbmc7CmJlZ2luCiAgIHQ6PXg7CiAgIHg6PXk7CiAgIHk6PXQ7CmVuZDsgIApwcm9jZWR1cmUgc2NhbWJpYWNoICh2YXIgeCx5OiBjaGFyKTsKdmFyIHQ6Y2hhcjsKYmVnaW4KICAgdDo9eDsKICAgeDo9eTsKICAgeTo9dDsKZW5kOyAKUHJvY2VkdXJlIG9yZGluYW1lbnRvIChlc3RyZW1vaSxlc3RyZW1vczogcXdvcmQ7IHZhciB2IDogZWxlbmNvOyBvcmRpbmF0bzpib29sZWFuKTsKdmFyIGluZiwgc3VwLCBtZWRpbzpxd29yZDsKICAgIHBpdm90IDpzdHJpbmdbMV07CmJlZ2luCiAgICBpbmY6PWVzdHJlbW9pOwogICAgc3VwOj1lc3RyZW1vczsKICAgIG1lZGlvOj0gKGVzdHJlbW9pK2VzdHJlbW9zKSBkaXYgMjsKICAgIHBpdm90Oj12W21lZGlvXTsKICAgIHJlcGVhdAogICAgICBpZiAob3JkaW5hdG8pIHRoZW4KICAgICAgICAgYmVnaW4KICAgICAgICAgICAgd2hpbGUgKHZbaW5mXTxwaXZvdCkgZG8gIGluZjo9aW5mKzE7CiAgICAgICAgICAgIHdoaWxlICh2W3N1cF0+cGl2b3QpIGRvICBzdXA6PXN1cC0xOwogICAgICAgICBlbmQ7CiAgICAgIGlmIGluZjw9c3VwIHRoZW4KICAgICAgIGJlZ2luCiAgICAgICAgIHNjYW1iaWEodltpbmZdLHZbc3VwXSk7CiAgICAgICAgIGluZjo9aW5mKzE7CiAgICAgICAgIHN1cDo9c3VwLTE7CiAgICAgICBlbmQ7CiAgICB1bnRpbCBpbmY+c3VwOwogICAgaWYgKGVzdHJlbW9pPHN1cCkgdGhlbiBvcmRpbmFtZW50byhlc3RyZW1vaSxzdXAsdixvcmRpbmF0byk7CiAgICBpZiAoaW5mPGVzdHJlbW9zKSB0aGVuIG9yZGluYW1lbnRvKGluZixlc3RyZW1vcyx2LG9yZGluYXRvKTsKZW5kOyAKIFByb2NlZHVyZSBpbnZlcnNpb25lICh4OkFuc2lzdHJpbmc7IGluaXppbzpxd29yZDsgIHZhciBTY29uaW52OmFuc2lzdHJpbmcpOwogdmFyIFNkYWludixTcHJlZml4IDogYW5zaXN0cmluZzsKIGJlZ2luCiAgICAgY291bnQ6PW0taW5pemlvKzE7IFNwcmVmaXg6PScnOyAKICAgICBTZGFpbnY6PWNvcHkoeCxpbml6aW8sIGNvdW50KTsgCiAgICAgU3ByZWZpeDo9Y29weSh4LCAxLCBpbml6aW8tMSk7IAogICAgIHN0cmluZ2FpbnZlcnRpdGE6PVJldmVyc2VTdHJpbmcoU2RhaW52KTsKICAgICBTY29uaW52Oj1TcHJlZml4K3N0cmluZ2FpbnZlcnRpdGE7CiBlbmQ7ICAKClByb2NlZHVyZSBuZXh0UGVybXV0YXRpb24gKHZhciBQIDogYW5zaXN0cmluZykgOwp2YXIgcGl2b3Q6cXdvcmQ7ICAgCiAgICgqIEZpbmQgdGhlIHBpdm90IGluZGV4KikKYmVnaW4gCiAgICBwaXZvdCA6PSAwOyAKICAgIGZvciBpIDo9IG0gLSAxIGRvd250byAxIGRvCiAgICAgICAgICAgICAgICAgICAgaWYgKFBbaV0gPCBQW2kgKyAxXSkgdGhlbiBiZWdpbiBwaXZvdDo9aTsgYnJlYWs7IGVuZDsKICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKHBpdm90KTsKICAgIGlmIHBpdm90ID0gMCB0aGVuIGV4aXQ7CiAgICAgICAoKiBmaW5kIHRoZSBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHRoYXQgaXMgZ3JlYXRlciB0aGFuIHBpdm90KikKICAgIGZvciBpIDo9IG0gIGRvd250byBwaXZvdCsxIGRvCiAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQW2ldID4gUFtwaXZvdF0pICB0aGVuIHNjYW1iaWFjaCAoUFtpXSwgUFtwaXZvdF0pOyAKICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKFApOwogICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAKICAgICgqIFJldmVyc2UgdGhlIGVsZW1lbnRzIGZyb20gcGl2b3QgKyAxIHRvIHRoZSBlbmQgdG8gZ2V0IHRoZSBuZXh0IHBlcm11dGF0aW9uKikKICAgIGlmIHBpdm90KzE9bSB0aGVuICBiZWdpbiBTY29uaW52Oj1QOyB3cml0ZWxuKCdWVicsU2Nvbmludik7IGVuZAogICAgICAgICAgICAgICAgIGVsc2UgaW52ZXJzaW9uZSAoUCwgcGl2b3QrMSwgU2Nvbmludik7CiAgICAKICAgIAogICAgIAogICAgCmVuZDsKICAgICAgIApiZWdpbgoJcmVhZGxuKG0sayk7CglyZWFkbG4oY2lmcmUpOwogICAgICAgICAgICAgKCogIFg6PVJldmVyc2VTdHJpbmcoY2lmcmUpOyB3cml0ZWxuIChYKTsqKQoJZm9yIGk6PTEgdG8gbSBkbyBhcnJudW1baV06PWNvcHkoY2lmcmUsaSwxKTsKICAgIG9yZGluYW1lbnRvICgxLG0sYXJybnVtLCB0cnVlKTsKICAgIHN0cmluZ2FvcmRpbmF0YTo9Jyc7IFNjb25pbnY6PScnOwogICAgZm9yIGk6PTEgdG8gbSBkbyBzdHJpbmdhb3JkaW5hdGE6PXN0cmluZ2FvcmRpbmF0YSthcnJudW1baV07CiAgICAoKnZhbChjaWZyZSxudW1lcm8sY29kKTsgCiAgICB3cml0ZWxuIChudW1lcm8pOwogICAgaW52ZXJzaW9uZSAoY2lmcmUsIDMsIHN0cmluZ2FpbnZlcnRpdGEpOwogICAgd3JpdGVsbihzdHJpbmdhaW52ZXJ0aXRhKTsqKQogICAgc3RyaW5nYWRhaW52ZXJ0aXJlOj1zdHJpbmdhb3JkaW5hdGE7CiAgICBmb3IgaTo9MSB0byBtIGRvIHdyaXRlKGFycm51bVtpXSk7IHdyaXRlbG4oJ29vJyk7CiAgICAKICAgIGZvciB6Oj0xIHRvIDYgZG8gYmVnaW4gIG5leHRQZXJtdXRhdGlvbihzdHJpbmdhZGFpbnZlcnRpcmUpOyBzdHJpbmdhZGFpbnZlcnRpcmU6PVNjb25pbnY7IHdyaXRlbG4oJ2NpY2wnLFNjb25pbnYpOyBlbmQ7CmVuZC4K