program liftas_vyr;
  { Katinai lifte; (14 olimp, I etapas, vyr. grupė }
  const PASK = 20; { paskutiniojo aukšto numeris }
        SK = 20;   { aukštų skaičius }
        AS = 5; { per tiek aukštų pavažiuoja liftas, kol katinas
                  užlipa 1 aukštą }
 
 var myg, aukstas, n_aukstas, mauk, vaz, i: integer;
     pirmas, paskut, kic_namie: boolean;
     aibe: set of 0..50;
begin
  readln (aukstas, myg);
  pirmas := aukstas = 1; { gal liftas pradėjo kilti nuo pirmo aukšto }
  paskut := false; { paskutiniame aukšte Micius dar nebuvo }
  mauk := 0; { Micius dar nepervažiavo nė vieno aukšto }
  vaz := 0; { kiek aukštu iš viso liftas pervažiavo }
  aibe := [];
  if aukstas = 1 then aibe := aibe + [1];
  kic_namie := false; { ar Kicius pasiekė namus }
  for i := 1 to myg do
    begin
      read (n_aukstas);
      kic_namie := kic_namie or (n_aukstas = pask) and
         (aibe <> []);
      if not kic_namie
         then vaz := vaz + abs (aukstas - n_aukstas);

         if pirmas { jei jau buvo pirmame aukšte } { dabar Micius }
         then begin
           if not paskut { jei paskutinis dar nepasiektas }
              then
                 begin
                   paskut := n_aukstas = PASK;
                   mauk := mauk + abs (aukstas - n_aukstas);
                 end
           end
         else pirmas := n_aukstas = 1; { jei pirmame aukšte dar nebuvo }
       aukstas := n_aukstas;
    end;
  { išvedami rezultatai }
  if paskut
     then writeln ('TAIP')
     else writeln ('NE');
  writeln (mauk);
  if (vaz div 5 <= 5*19) and (aibe <> []) { jei verta važiuoti }
     then begin
            for i := 1 to SK-1 do
              if i in aibe then write (i, ' ');
            if vaz div 5 = 5*19
               then write (SK);
          end
     else write (PASK);
end.
