program wardrobe3;
Uses Strutils;
const MAX = 5000000;
type elenco = array[1..MAX] of string[1];
var m,k,i :qword;
numero : qword;
cifre, X : Ansistring;
ccifre : array[1..MAX] of integer;
potenzadieci : array [0..MAX] of qword;
arrnum:array [1..MAX] of string[1];
procedure scambia (var x,y: string);
var t:string;
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 next_permutation (p : elenco);
var pivot :int64;
begin
(*Find the pivot index*)
pivot := -1;
for i := m - 2 downto 0 do
begin
if p[i] < p[i + 1] then
begin
pivot := i;
break;
end;
end;
(*find the element from the right that is greater than pivot*)
for i := m - 1 downto pivot+1 do
begin
if p[i] > p[pivot] then
begin
scambia(p[i], p[pivot]);
break;
end;
end;
end;
begin
readln(m,k);
readln(cifre);
X:=ReverseString(cifre);
for i:=1 to m do arrnum[i]:=copy(cifre,i,1);
for i:=1 to m do write(arrnum[i]); writeln;
potenzadieci[0]:=1; numero:=0;
for i:=1 to m do potenzadieci[i]:=(potenzadieci[i-1]*10);
for i:=1 to m do begin numero:=numero + potenzadieci[m-i]*(ord(cifre[i]) - 48); end;
ordinamento (1,m,arrnum, true);
for i:=1 to m do write(arrnum[i]); writeln;
next_permutation(arrnum);
for i:=1 to m do write(arrnum[i]); writeln;
end.
cHJvZ3JhbSB3YXJkcm9iZTM7ClVzZXMgU3RydXRpbHM7CmNvbnN0IE1BWCA9IDUwMDAwMDA7CnR5cGUgZWxlbmNvID0gYXJyYXlbMS4uTUFYXSBvZiBzdHJpbmdbMV07CnZhciBtLGssaSA6cXdvcmQ7CiAgICBudW1lcm8gOiBxd29yZDsKICAgIGNpZnJlLCBYIDogQW5zaXN0cmluZzsKICAgIGNjaWZyZSA6IGFycmF5WzEuLk1BWF0gb2YgaW50ZWdlcjsKICAgIHBvdGVuemFkaWVjaSA6IGFycmF5IFswLi5NQVhdIG9mIHF3b3JkOwogICAgYXJybnVtOmFycmF5IFsxLi5NQVhdIG9mICBzdHJpbmdbMV07CiAgICAKcHJvY2VkdXJlIHNjYW1iaWEgKHZhciB4LHk6IHN0cmluZyk7CnZhciB0OnN0cmluZzsKYmVnaW4KICAgdDo9eDsKICAgeDo9eTsKICAgeTo9dDsKZW5kOyAgClByb2NlZHVyZSBvcmRpbmFtZW50byAoZXN0cmVtb2ksZXN0cmVtb3M6IHF3b3JkOyB2YXIgdiA6IGVsZW5jbzsgb3JkaW5hdG86Ym9vbGVhbik7CnZhciBpbmYsIHN1cCwgbWVkaW86cXdvcmQ7CiAgICBwaXZvdCA6c3RyaW5nWzFdOwpiZWdpbgogICAgaW5mOj1lc3RyZW1vaTsKICAgIHN1cDo9ZXN0cmVtb3M7CiAgICBtZWRpbzo9IChlc3RyZW1vaStlc3RyZW1vcykgZGl2IDI7CiAgICBwaXZvdDo9dlttZWRpb107CiAgICByZXBlYXQKICAgICAgaWYgKG9yZGluYXRvKSB0aGVuCiAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIHdoaWxlICh2W2luZl08cGl2b3QpIGRvICBpbmY6PWluZisxOwogICAgICAgICAgICB3aGlsZSAodltzdXBdPnBpdm90KSBkbyAgc3VwOj1zdXAtMTsKICAgICAgICAgZW5kOwogICAgICBpZiBpbmY8PXN1cCB0aGVuCiAgICAgICBiZWdpbgogICAgICAgICBzY2FtYmlhKHZbaW5mXSx2W3N1cF0pOwogICAgICAgICBpbmY6PWluZisxOwogICAgICAgICBzdXA6PXN1cC0xOwogICAgICAgZW5kOwogICAgdW50aWwgaW5mPnN1cDsKICAgIGlmIChlc3RyZW1vaTxzdXApIHRoZW4gb3JkaW5hbWVudG8oZXN0cmVtb2ksc3VwLHYsb3JkaW5hdG8pOwogICAgaWYgKGluZjxlc3RyZW1vcykgdGhlbiBvcmRpbmFtZW50byhpbmYsZXN0cmVtb3MsdixvcmRpbmF0byk7CmVuZDsgIAoKcHJvY2VkdXJlIG5leHRfcGVybXV0YXRpb24gKHAgOiBlbGVuY28pOwp2YXIgcGl2b3QgOmludDY0OwpiZWdpbgogICgqRmluZCB0aGUgcGl2b3QgaW5kZXgqKQogICAgcGl2b3QgOj0gLTE7IAogICAgZm9yIGkgOj0gbSAtIDIgZG93bnRvIDAgZG8KICAgICAgICAgICAgIGJlZ2luIAogICAgICAgICAgICAgICAgaWYgcFtpXSA8IHBbaSArIDFdIHRoZW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpdm90IDo9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICBlbmQ7CiAgICAgKCpmaW5kIHRoZSBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHRoYXQgaXMgZ3JlYXRlciB0aGFuIHBpdm90KikKICAgIGZvciBpIDo9IG0gLSAxIGRvd250byBwaXZvdCsxIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBbaV0gPiBwW3Bpdm90XSB0aGVuIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FtYmlhKHBbaV0sIHBbcGl2b3RdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICBlbmQ7IAogICAgIApiZWdpbgoJcmVhZGxuKG0sayk7CglyZWFkbG4oY2lmcmUpOwogICAgICAgICAgICAgICBYOj1SZXZlcnNlU3RyaW5nKGNpZnJlKTsgCglmb3IgaTo9MSB0byBtIGRvIGFycm51bVtpXTo9Y29weShjaWZyZSxpLDEpOwoJZm9yIGk6PTEgdG8gbSBkbyB3cml0ZShhcnJudW1baV0pOyB3cml0ZWxuOwoJcG90ZW56YWRpZWNpWzBdOj0xOyBudW1lcm86PTA7Cglmb3IgaTo9MSB0byBtIGRvIHBvdGVuemFkaWVjaVtpXTo9KHBvdGVuemFkaWVjaVtpLTFdKjEwKTsKCWZvciBpOj0xIHRvIG0gZG8gYmVnaW4gbnVtZXJvOj1udW1lcm8gKyBwb3RlbnphZGllY2lbbS1pXSoob3JkKGNpZnJlW2ldKSAtIDQ4KTsgIGVuZDsKICAgIG9yZGluYW1lbnRvICgxLG0sYXJybnVtLCB0cnVlKTsgIAogICAgZm9yIGk6PTEgdG8gbSBkbyB3cml0ZShhcnJudW1baV0pOyB3cml0ZWxuOwogICAgbmV4dF9wZXJtdXRhdGlvbihhcnJudW0pOyAKICAgIGZvciBpOj0xIHRvIG0gZG8gd3JpdGUoYXJybnVtW2ldKTsgd3JpdGVsbjsKZW5kLg==