import java.io.*;
import java.util.*;
import java.math.*;
public class Main {
static PrintWriter cout = new PrintWriter(System.out);
static FastReader cin = new FastReader();
static final int N = 200010;
static int [] pre = new int [N*4], suf = new int [N*4], max = new int [N*4], ls = new int [N*4], rs = new int [N*4], size = new int [N*4];
static int lc (int u) {
return u >> 1;
}
static int rc (int u) {
return u >> 1 | 1;
}
static void pushup (int u) {
if(rs[lc(u)] == ls[rc(u)]) {
max[u] = Math.max(max[lc(u)], max[rc(u)]);
}
else {
max[u] = Math.max(Math.max(max[lc(u)], max[rc(u)]),suf[lc(u)] + pre[rc(u)]);
}
if(size[lc(u)] == pre[lc(u)] && rs[lc(u)] != ls[rc(u)]) pre[u] = size[lc(u)] + pre[rc(u)];
else pre[u] = pre[lc(u)];
if(size[rc(u)] == suf[rc(u)] && rs[lc(u)] != ls[rc(u)]) suf[u] = size[rc(u)] + suf[lc(u)];
else suf[u] = suf[rc(u)];
ls[u] = ls[lc(u)];
rs[u] = rs[rc(u)];
size[u] = size[lc(u)] + size[rc(u)];
}
static void build(int u, int l, int r) {
if(l == r) {
size[u] = ls[u] = rs[u] = max[u] = pre[u] = suf[u] = 1;
return;
}
int mid = (l + r) >> 1;
build(lc(u), l, mid);
build(rc(u), mid + 1, r);
pushup(u);
}
static void change(int u, int l, int r, int pos) {
if(l == r) {
ls[u] ^= 1;
rs[u] ^= 1;
return;
}
int mid = (l + r) >> 1;
if(pos <= mid) change(lc(u), l , mid, pos);
else change(rc(u), mid + 1, r, pos);
pushup(u);
}
public static void main(String[] args) {
int t = 1;
while(t-- > 0) {
solve();
cout.flush();
}
}
static void solve() {
int n = cin.nextInt(), q = cin.nextInt();
build(1, 1, n);
while(q-- > 0) {
int x = cin.nextInt();
change(1, 1, n, x);
cout.println(max[1]);
}
}
}
class FastReader{
StringTokenizer st;
BufferedReader br;
public FastReader() {
br = new BufferedReader(new InputStreamReader(System.in));
}
String next() {
while(st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
}catch (IOException e) {
e.getStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
}