{
Written by Fyodor Menshikov 10.02.2004
21:09-21:34
}
{$R+,Q+}
var
   len:array[1..40]of longint;
   answer:array[1..1000]of char;
   alen:integer;

   procedure init;
   var
      i:integer;
   begin
      len[1]:=1;
      len[2]:=1;
      for i:=3 to high(len) do
         len[i]:=len[i-1]+len[i-2];
      alen:=0;
   end;

   procedure go(n:integer;place,length:longint);
   var
      length1,length2:longint;
   begin
      if (place<1) or (length<1) or (place+length-1>len[n]) then begin
         writeln('error: n=',n,' place=',place,' length=',length);
         halt(1);
      end;
      if n=1 then begin
         inc(alen);
         answer[alen]:='b';
      end
      else if n=2 then begin
         inc(alen);
         answer[alen]:='a';
      end
      else begin
         if place>len[n-1] then
            go(n-2,place-len[n-1],length)
         else if place+length-1<=len[n-1] then
            go(n-1,place,length)
         else begin
            length1:=len[n-1]-place+1;
            length2:=length-length1;
            go(n-1,place,length1);
            go(n-2,1,length2);
         end;
      end;
   end;

   procedure show;
   var
      i:integer;
   begin
      {writeln('alen=',alen);}
      for i:=1 to alen do
         write(answer[i]);
      writeln;
   end;

var
   n:integer;
   m,l:longint;
begin
   init;
//   assign(input,'input.txt');
   reset(input);
//   assign(output,'output.txt');
   rewrite(output);
   readln(n,m,l);
   if m+l-1>len[n] then
      l:=len[n]-m+1;
   go(n,m,l);
   show;
end.