shu=record
x:array[0..1000]of integer;
end;
const
a='a';b='b';c='c';d='d';
var s,s1,s2:r;
n,t1,i,m,t2,li:integer;
l:array[1..2000]of char;bl:boolean;
procedure work(var i:integer;si,sj:r;var ti,tj:integer;xj,yj:char);
begin
repeat
if (i>n)or(bl) then exit;
if (s^.x[i]<si^.x[ti])or(si^.x[ti]=m) then
begin
repeat if si^.x[ti]=m then//
begin
inc(li);l[li]:=yj;dec(ti);inc(m);
end;
until si^.x[ti]<>m;
if (s^.x[i]<si^.x[ti]) then //
begin
inc(ti);si^.x[ti]:=s^.x[i];inc(li);l[li]:=xj;
bl:=true;end
else
end
else
if (s^.x[i]<sj^.x[tj])or(sj^.x[tj]=m) then work(i,sj,si,tj,ti,c,d)
else begin writeln('0');halt;end;
until bl;
inc(i);bl:=false;
work(i,s1,s2,t1,t2,a,b);
end;
begin
new(s);new(s1);new(s2);
m:=1;
s1^.x[0]:=maxint; s2^.x[0]:=maxint;
readln(n);
for i:=1 to n do read(s^.x[i]);
i:=1;
work(i,s1,s2,t1,t2,a,b);
for i:=1 to n+n-2 do write(l[i],' ');//
if l[n+n-1]<>'' then write(l[n+n-1],' ') else write('d',' ');//
writeln(l[n+n]);
readln ;readln
end.