const
  NMAX = 40;

var
  N,M,L : LongInt;
  f: array[1..NMAX] of LongInt;
  i: LongInt;

procedure OutSymbol(l:LongInt);
var
  i: LongInt;
begin
  i:=1;
  while f[i]<l do inc(i);
  while l>2 do
  begin
    l:=l-f[i-1];
    while f[i]>=l do dec(i);
    inc(i);
  end;
  if l=1 then write('a') else write('b');
end;

function min(a,b: LongInt):LongInt;
begin
  if a<b then min:=a else min:=b;
end;

begin

//  assign(input,'input.txt');
  reset(input);
//  assign(output,'output.txt');
  rewrite(output);

  readln(N,M,L);
  if N=1 then begin writeln('b'); exit; end;
  f[1]:=1; f[2]:=1;
  for i:=3 to N do f[i]:=f[i-2]+f[i-1];
  for i:=M to min(M+L-1,f[N]) do OutSymbol(i);
  writeln;
end.