#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6;
int n,m;
int pos;
struct node{
int l;
int r;
int numl;
int numr;
int maxl;//最大前缀
int maxr;//最大后缀
int len;
int ans;
node(){
}
};
node tree[maxn*4];
void pushup(int idx){
tree[idx].numl=tree[idx*2].numl;
tree[idx].numr=tree[idx*2+1].numr;
tree[idx].maxl=tree[idx*2].maxl;
tree[idx].maxr=tree[idx*2+1].maxr;
if(tree[idx*2].maxl==tree[idx*2].len){
if(tree[idx*2].numr!=tree[idx*2+1].numl){
tree[idx].maxl=max(tree[idx].maxl,tree[idx*2].maxl+tree[idx*2+1].maxl);
}
}
if(tree[idx*2+1].maxr==tree[idx*2+1].len){
if(tree[idx*2+1].numl!=tree[idx*2].numr){
tree[idx].maxr=max(tree[idx].maxr,tree[idx*2+1].maxr+tree[idx*2].maxr);
}
}
tree[idx].ans=max(tree[idx].ans,tree[idx*2].ans);
tree[idx].ans=max(tree[idx].ans,tree[idx*2+1].ans);
if(tree[idx*2].numr!=tree[idx*2+1].numl){
tree[idx].ans=max(tree[idx].ans,tree[idx*2].maxr+tree[idx*2+1].maxl);
}
}
void build(int idx,int l,int r){
tree[idx].l=l;
tree[idx].r=r;
tree[idx].len=tree[idx].r-tree[idx].l+1;
if(tree[idx].l==tree[idx].r){
tree[idx].maxl=1;
tree[idx].maxr=1;
tree[idx].numl=1;
tree[idx].numr=1;
tree[idx].ans=1;
return;
}
int mid=(tree[idx].l+tree[idx].r)/2;
build(idx*2,l,mid);
build(idx*2+1,mid+1,r);
pushup(idx);
}
void update(int idx,int pos){
if(tree[idx].l==pos&&tree[idx].r==pos){
tree[idx].numl^=1;
tree[idx].numr^=1;
return;
}
int mid=(tree[idx].l+tree[idx].r)/2;
if(pos<=mid){
update(idx*2,pos);
}else{
update(idx*2+1,pos);
}
pushup(idx);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
cin>>n;
build(1,1,n);
cin>>m;
for(int i=1;i<=m;i++){
cin>>pos;
update(1,pos);
cout<<tree[1].ans<<"\n";
}
}