var
i,j,p1,p2,p3,q,k:longint;
c:char;
a,b,m:string;
procedure swap(var a,b:char);
var t:char;
begin
t:=a; a:=b; b:=t
end;
BEGIN
readln(p1,p2,p3);
readln(a);
i:=1;
j:=1;
b:='';
while a[i]='-' do begin b[j]:='-'; inc(i); inc(j) end;
while i<=length(a) do begin
if (a[i]<>'-') or ((a[i]='-') and ((a[i-1]='-') or (a[i+1]='-')))
then begin b[j]:=a[i]; inc(i); inc(j); continue end else
if succ(a[i-1])=a[i+1] then begin inc(i); continue end else
if (ord(a[i-1])>=ord(a[i+1]))
or ((a[i-1] in ['0'..'9'] ) and (a[i+1] in ['a'..'z']))
then begin b[j]:='-'; inc(i); inc(j); continue end
else begin
m:=''; q:=1;
case p1 of
1:
for c:=succ(a[i-1]) to pred(a[i+1]) do
for k:=1 to p2 do begin
m[q]:=c;
inc(q)
end;
2:
for c:=succ(a[i-1]) to pred(a[i+1]) do
for k:=1 to p2 do begin
if c in ['0'..'9'] then m[q]:=c else m[q]:=upcase(c);
inc(q)
end;
3:
for c:=succ(a[i-1]) to pred(a[i+1]) do
for k:=1 to p2 do begin
m[q]:='*';
inc(q)
end;
end;
if p3=2 then for k:=1 to (q-1)div 2 do swap(m[k],m[q-k]);
for k:=1 to q-1 do begin b[j]:=m[k]; inc(j) end;
inc(i)
end
end;
for i:=1 to j do write(b[i])
end.
测试结果:http://www.rqnoj.cn/status/1039425