program kaladeliu_deliojimas;
  function nevirsija (n: integer): integer;
  { randa did‘iausi… skai‡i—, kurio kvadratas neviržija n }
    var sk: integer;
  begin
    sk := n div 2;
    while sk > n div sk do
      sk := sk - 1;
    nevirsija := sk;
  end; { neviržija }

  var n, sk, kvadratas: integer;
begin
  readln (n);
  { rasime did‘iausi… skai‡i—, kurio kvadratas neviržija n }
  sk := nevirsija (n);
  while n > 0 do
    begin
      kvadratas := sk * sk;
      if kvadratas <= n
       then begin
              writeln (kvadratas);
              n := n - kvadratas;
            end
       else sk := sk - 1;
    end;
end.