#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int off = ( 1 << 18 );

#define L( x ) ( ( x ) << ( 1 ) )
#define R( x ) ( L( x ) | ( 1 ) )

int N, Q, idx;
int ll[ off << 1 ], lr[ off << 1 ];
int rr[ off << 1 ], rl[ off << 1 ];
int best[ off << 1 ];

void build( int n ) {
   if( n >= off ) return;
   build( L( n ) );
   build( R( n ) );
   ll[n] = ll[L(n)];
   rl[n] = rl[R(n)];
   best[n] = max( best[L(n)], best[R(n)] );
}

int main( void )
{
   scanf( "%d%d", &N, &Q );
   
   for( int i = 0; i < N; ++i ) ll[i+off] = rl[i+off] = best[i+off] = 1;
   
   build( 1 );
   
   for( int i = 0; i < Q; ++i ) {
      scanf( "%d", &idx ); --idx;
      
      idx += off;
      ll[idx] ^= 1; lr[idx] ^= 1;
      rl[idx] ^= 1; rr[idx] ^= 1;
      
      best[idx] = 1;
      
      idx >>= 1;
      
      if( ll[L(idx)] && rr[R(idx)] ) ll[idx] = 2;
      else if( ll[L(idx)] ) ll[idx] = 1;
      else ll[idx] = 0;
      
      if( lr[L(idx)] && rl[R(idx)] ) lr[idx] = 2;
      else if( lr[L(idx)] ) lr[idx] = 1;
      else lr[idx] = 0;
      
      if( rl[R(idx)] && lr[L(idx)] ) rl[idx] = 2;
      else if( rl[R(idx)] ) rl[idx] = 1;
      else rl[idx] = 0;
      
      if( rr[R(idx)] && ll[L(idx)] ) rr[idx] = 2;
      else if( rr[R(idx)] ) rr[idx] = 1;
      else rr[idx] = 0;
      
      best[idx] = max( max( ll[idx], rr[idx] ), max( lr[idx], rl[idx] ) );
      
      int n = 2;
      
      for( idx >>= 1; idx; idx >>= 1 ) {
         if( ll[L(idx)] == n ) ll[idx] = ll[L(idx)]+ll[R(idx)];
         else ll[idx] = ll[L(idx)];
         if( lr[L(idx)] == n ) lr[idx] = lr[L(idx)]+lr[R(idx)];
         else lr[idx] = lr[L(idx)];
         
         if( rr[R(idx)] == n ) rr[idx] = rr[R(idx)]+rr[L(idx)];
         else rr[idx] = rr[R(idx)];
         if( rl[R(idx)] == n ) rl[idx] = rl[R(idx)]+rl[L(idx)];
         else rl[idx] = rl[R(idx)];
         
         best[idx] = max( best[L(idx)], best[R(idx)] );
         best[idx] = max( best[idx], max( ll[idx], rr[idx] ) );
         best[idx] = max( best[idx], max( lr[idx], rl[idx] ) );
         best[idx] = max( best[idx], rl[L(idx)]+lr[R(idx)] );
         best[idx] = max( best[idx], rr[L(idx)]+ll[R(idx)] );
         n *= 2;
         
      }
      
      printf( "%d\n", best[1] );
   }
   
   return 0;
}
