program Untitled;
label izlaz;
var
   i, n, q, j, k, s, c, mmax, max : longint;
   z : boolean;
   mat, a : array [ 0..200005 ] of longint;
begin
     for i := 1 to 200000 do
     begin
          mat[i] := 0;
     end;
     readln ( n, q );
     for i := 1 to q do
     begin
          readln ( a[i] );
     end;
     if ( a[1] = 1 ) or ( a[1] = n ) then writeln ( 2 ) else writeln ( 3 );
     mat[1] := a[1];
     s := 1;
     for i := 2 to q do
     begin
          for j := 1 to s do
          begin
               if a[i] = mat[j] then
               begin
                    for k := j to s do
                    begin
                         mat[k] := mat[k + 1];
                    end;
                    s := s - 1;
                    goto izlaz;
               end;
          end;
          s := s + 1;
          mat[s] := a[i];
          izlaz :
          for j := 1 to s - 1 do
          begin
               for k := j + 1 to s do
               begin
                    if mat[j] > mat[k] then
                    begin
                         c := mat[j];
                         mat[j] := mat[k];
                         mat[k] := c;
                    end;
               end;
          end;
          z := true;
          mmax := 0;
          max := 0;
          if mat[1] = 1 then mmax := 1 else mmax := 2;
          for j := 2 to s do
          begin
               if ( z = true ) and ( mat[j] - 2 = mat[j - 1] ) then mmax := mmax + 2;
               if ( z = false ) and ( mat[j] - 2 = mat[j - 1] ) then
               begin
                    z := true;
                    if ( mat[j - 1] = 1 ) and ( mat[j - 1] - 1 = mat[j - 2] ) then mmax := mmax + 1 else mmax := mmax + 2;
               end;
               if ( z = true ) and ( mat[j] - 2 <> mat[j - 1] ) then
               begin
                    z := false;
                    if ( mat[j - 1] < n ) and ( mat[j - 1] + 2 < mat[j] ) then mmax := mmax + 1;
                    if mmax > max then max := mmax;
                    mmax := 0;
               end;
          end;
          if z = true then
          begin
               if mat[s] < n then mmax := mmax + 1;
               if mmax > max then max := mmax;
          end;
          if z = false then
          begin
               mmax := 0;
               if mat[s] - 2 > mat[s - 1] then mmax := mmax + 2 else mmax := mmax + 1;
               if mat[s] < n then mmax := mmax + 1;
               if mmax > max then max := mmax;
          end;
          writeln ( max );
     end;
readln;
end.
