#include <cstdio>
#include <algorithm>

#define KONJ 42 - 42
#define MAXN 200010

using namespace std;

struct state{
       int lo, hi, best;
       state(){}
       state( int _lo, int _hi, int _best ){
              lo = _lo;
              hi = _hi;
              best = _best;
       }
};

int N, Q;
bool niz[MAXN]; // 0 = L

state solve( int beg, int end ){

      state ret;
      if ( beg == end ){ return state( 1, 1, 1 ); }
      
      int left_el = ( beg + end ) / 2 - beg + 1;
      int right_el = end - ( ( beg + end ) / 2 + 1 ) + 1;
      
      state left = solve( beg, ( beg + end ) / 2 );
      state right = solve( ( beg + end ) / 2 + 1, end );
      
      if ( left.best == left_el && niz[ ( beg + end ) / 2 ] != niz[ ( beg + end ) / 2 + 1 ] ){
           ret.lo = left.best + right.lo;
      } else {
           ret.lo = left.lo;  
      }
      
      if ( right.best == right_el && niz[ ( beg + end ) / 2 ] != niz[ ( beg + end ) / 2 + 1 ] ){
            ret.hi = right.best + left.hi;
      } else {
            ret.hi = right.hi;
      }

      ret.best = max( left.best, right.best );
      if ( niz[ ( beg + end ) / 2 ] != niz[ ( beg + end ) / 2 + 1 ] ){ ret.best = max( ret.best, left.hi + right.lo ); }
      
      return ret;

}

int main( void ){

    scanf( "%d%d", &Q, &N );
    for ( int i = 0; i < Q; ++i ){
        int x;
        scanf( "%d", &x ); --x; niz[x] = !niz[x];
        state sol = solve( 0, N - 1 );
        if ( sol.best == 1 ){ printf( "0\n" ); } else { printf( "%d\n", sol.best ); }
    }
    
    return KONJ;

}
