#include<iostream>
#include<cstdio>

using namespace std;

int n, q;
int t[200001];
int b[525000], e[525000];
int lf[200001];

struct node
{
    node(int _ls, int _rs, int _ms)
    {
        ls = _ls;
        rs = _rs;
        ms = _ms;
    }
    node()
    {
    }
    
    int ls, rs, ms;
} st[525000];

void init(int i = 1, int j = n, int x = 1)
{
    b[x] = i;
    e[x] = j;

    st[x] = node(1, 1, 1);
    
    if(i == j)
    {
        lf[i] = x;
        return;
    }
    
    int l = x * 2;
    int r = x * 2 + 1;
    
    init(i, i + j >> 1, l);
    init(i + j + 2 >> 1, j, r);
}

int main()
{
    scanf("%d %d", &n, &q);
    for(int i = 1; i <= n; ++i)
        t[i] = i & 1;
    init();
    while(q--)
    {
        int a;
        scanf("%d", &a);
        t[a] = !t[a];
        int x = lf[a];
        while(x /= 2)
        {
            int l = x * 2;
            int r = x * 2 + 1;
            
            st[x].ls = st[l].ls;
            if(st[l].ls == e[l] - b[l] + 1 && t[b[l]] == t[b[r]])
                st[x].ls += st[r].ls;
                
            st[x].rs = st[r].rs;
            if(st[r].rs == e[r] - b[r] + 1 && t[e[l]] == t[e[r]])
                st[x].rs += st[l].rs;
            
            st[x].ms = 0;
            if(t[e[l]] == t[b[r]])
                st[x].ms = st[l].rs + st[r].ls;
            st[x].ms = max(st[x].ms, max(st[l].ms, st[r].ms));
        }
        printf("%d\n", st[1].ms);
    }
    return 0;
}
