#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5;
int tree[N << 2], tag[N << 2], a[N], Pre[N << 2], Nxt[N << 2], before[N << 2], after[N << 2];
void pushup(int cur){
int num;
if(before[cur << 1 | 1] != after[cur << 1]) num = Pre[cur << 1 | 1] + Nxt[cur << 1];
else num = max(Pre[cur << 1 | 1], Nxt[cur << 1]);
before[cur] = before[cur << 1];
after[cur] = after[cur << 1 | 1];
Pre[cur] = Pre[cur << 1];
Nxt[cur] = Nxt[cur << 1 | 1];
tree[cur] = max(num, max(Pre[cur], max(Nxt[cur], max(tree[cur << 1], tree[cur << 1 | 1]))));
}
void build(int cur, int l, int r){
if(l == r){
tree[cur] = 1;
before[cur] = after[cur] = 0;
return;
}
int mid = (l + r) >> 1;
build(cur << 1, l, mid);
build(cur << 1 | 1, mid + 1, r);
pushup(cur);
}
void update(int cur, int l, int r, int x){
if(l > x or r < x)return;
if(l == r){
if(before[cur] == 1) before[cur] = after[cur] = 0;
else before[cur] = after[cur] = 1;
return;
}
int mid = (l + r) >> 1;
update(cur << 1, l, mid, x);
update(cur << 1 | 1, mid + 1, r, x);
pushup(cur);
}
signed main(){
int n, m, opt, x, y, z;
cin >> n >> m;
build(1, 1, n);
for(int i = 1; i <= m; i++){
cin >> x;
update(1, 1, n, x);
cout << tree[1] << "\n";
}
}