program dangoraizis;

  type lentele = array [0..9] of longint;

  function kiek (x: integer): integer;
  { randa x skaitmen— kiek¨ }
    var sksk : integer;
  begin
    sksk := 0;
    while x > 0 do
      begin
        sksk := sksk + 1;
        x := x div 10;
      end;
    kiek := sksk;
  end; { kiek }

  procedure kiek_lenteliu (n: longint; var skaitm: lentele);
  { sprend‘ia u‘davin¨ efektyvesniu b–du }
    var laips, i, j, sksk, nn: longint;
  begin
    for j := 0 to 9 do
      skaitm[j] := 0;
    { kiek skaitmen— sudaro skai‡i— n }
    sksk := kiek (n);
    { apskai‡iuojame lenteli— kiek¨ }
    laips := 10;
    for i := 1 to sksk do
      begin { nagrin‚sime i-…j¨ nuo galo skaitmen¨ }
        { skai‡iuojame lenteli— su skaitmenimis nuo 1 iki 9 kiek¨ }
        for j := 1 to 9 do
          skaitm[j] := skaitm[j] + (n div laips) * (laips div 10);
        if i <> sksk
           then skaitm[0] := skaitm[0] + (n div laips - 1) * (laips div 10);
        for j := 1 to 9 do
          if (n div (laips div 10) mod 10) > j
            then skaitm[j] := skaitm[j] + (laips div 10)
          else if (n div (laips div 10) mod 10) = j
              then skaitm[j] := skaitm[j] + 1+
                                (n mod laips) mod (laips div 10);
         { skai‡iuojame lenteli— su skaitmeniu 0 kiek¨ }
         if i <> sksk
             then if (n div (laips div 10) mod 10) <> 0
                     then skaitm[0] := skaitm[0] + (laips div 10)
                     else skaitm[0] := skaitm[0] + 1+
                                       (n mod laips) mod (laips div 10);

        laips := laips * 10;
      end;
  end; { kiek_lenteli— }

  procedure paprasta (n: longint; var skaitm: lentele);
    { sprend‘ia u‘davin¨ per‘i–r‚dama kiekvien… skai‡i— }
    var i, j, ii, s: longint;
  begin
    for j := 0 to 9 do
      skaitm[j] := 0;
    { apskai‡iuojame lenteli— kiek¨ }
    for i := 1 to n do
      begin
        ii := i;
        while ii > 0 do
          begin
            s := ii mod 10;
            skaitm[s] := skaitm[s] + 1;
            ii := ii div 10;
          end;
      end;
  end; { paprasta }

  var n, i: longint;
      skaitm: lentele;
begin
  read (n);
  { apskai‡iuoja lenteli— kiek¨ efektyvesniu b–du }
  kiek_lenteliu (n, skaitm);
  for i := 0 to 9 do
    write (skaitm[i], ' ');
  writeln;
  { apskai‡iuoja lenteli— kiek¨ neefektyviu b–du }
  paprasta (n, skaitm);
  for i := 0 to 9 do
    write (skaitm[i], ' ');
end.