#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,q;
bool f[N];
struct line{
int l,r,max_l,max_r,max_all;
};
line tree[N*4];
void add(int k){
int lenl=tree[k<<1].r-tree[k<<1].l+1,
lenr=tree[k<<1|1].r-tree[k<<1|1].l+1;
tree[k].max_l=tree[k<<1].max_l;
tree[k].max_r=tree[k<<1|1].max_r;
tree[k].max_all=max(tree[k<<1].max_l,tree[k<<1|1].max_r);
if(f[tree[k<<1].r]^f[tree[k<<1|1].l]){
tree[k].max_all=max(tree[k].max_all,tree[k<<1].max_r+tree[k<<1|1].max_l);
if(tree[k<<1].max_all==lenl) tree[k].max_l=lenl+tree[k<<1|1].max_l;
if(tree[k<<1|1].max_all==lenr) tree[k].max_r=lenr+tree[k<<1].max_r;
}
}
void build(int k,int l,int r){
tree[k].l=l;tree[k].r=r;
if(l==r){
tree[k].max_l=1;
tree[k].max_r=1;
tree[k].max_all=1;
return;
}
int mid=l+r>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
add(k);
}
void change(int k,int id){
if(tree[k].l==tree[k].r){
f[id]^=1;
return;
}
int mid=tree[k].l+tree[k].r>>1;
if(id<=mid) change(k<<1,id);
else change(k<<1|1,id);
add(k);
}
int main(){
scanf("%d%d",&n,&q);
build(1,1,n);
while(q--){
int qid;
scanf("%d",&qid);
change(1,qid);
printf("%d\n",tree[1].max_all);
}
return 0;
}