var n, i, t: longint; a, resultat: array[1..106] of longint; begin write('Число? от 1 до 106 - '); read(n); a[1] := 0; for i := 2 to n do a[i] := maxint; for i := 2 to n do begin if a[i] > a[i - 1] + 1 then a[i] := a[i - 1] + 1; if i mod 2 = 0 then if a[i] > a[i div 2] + 1 then a[i] := a[i div 2] + 1; if i mod 3 = 0 then if a[i] > a[i div 3] + 1 then a[i] := a[i div 3] + 1; end; writeln('Количество результатов - ', a[n]); t := 0; i := n; while i <> 1 do begin inc(t); if (i mod 3 = 0) and (a[i div 3] + 1 = a[i]) then begin resultat[t] := 3; i := i div 3; end else if (i mod 2 = 0) and (a[i div 2] + 1 = a[i]) then begin resultat[t] := 2; i := i div 2; end else begin resultat[t] := 1; i := i - 1; end; end; for i := t downto 1 do write(' ', resultat[i]); end.