#include <iostream>
using namespace std;

const int maxn = 200000; // maksimaalne sisend
const int maxz = 262144; // puu lehtede arv, vähim 2^k >= maxn

// C ja C++ globaalsed staatilised muutujad (ja ainult need!)
// algväärtustatakse nullidega; keeltes, kus see nii ei ole,
// tuleks massiiv a programmeerijal algväärtustada

struct elem { // puu element
	int la; // lehtede arv alampuus
	bool vl; // vasakpoolseim leht (false == L, true == R)
	bool pl; // parempoolseim leht (false == L, true == R)
	int pp; // koreograafilise prefiksi pikkus
	int sp; // koreograafilise sufiksi pikkus
	int mp; // maksimaalse koreograafia pikkus
} a[2 * maxz]; // massiivi pakitud puu, juur on a[1]

// arvutab a[k] info selle alluvatest
void info(int k) {
	a[k].la = a[2 * k].la + a[2 * k + 1].la;
	a[k].vl = a[2 * k].vl;
	a[k].pl = a[2 * k + 1].pl;
	// prefiks on
	// - vasaku alluva prefiks või
	// - terve vasak pluss parema prefiks (kui need kokku sobivad)
	a[k].pp = a[2 * k].pp;
	if (a[2 * k].pp == a[2 * k].la && a[2 * k].pl != a[2 * k + 1].vl) {
		a[k].pp += a[2 * k + 1].pp;
	}
	// sufiks on
	// - parema alluva sufiks või
	// - terve parem pluss vasaku sufiks (kui need kokku sobivad)
	a[k].sp = a[2 * k + 1].sp;
	if (a[2 * k + 1].sp == a[2 * k + 1].la && a[2 * k].pl != a[2 * k + 1].vl) {
		a[k].sp += a[2 * k].sp;
	}
	// maksimaalne koreograafia võib olla
	// - vasaku alluva maksimaalne või
	// - parema alluva maksimaalne või
	// - vasaku sufiks + parema prefiks (kui need kokku sobivad)
	a[k].mp = 0;
	if (a[k].mp < a[2 * k].mp)
		a[k].mp = a[2 * k].mp;
	if (a[k].mp < a[2 * k + 1].mp)
		a[k].mp = a[2 * k + 1].mp;
	if (a[k].mp < a[2 * k].sp + a[2 * k + 1].pp && a[2 * k].pl != a[2 * k + 1].vl) {
		a[k].mp = a[2 * k].sp + a[2 * k + 1].pp;
	}
}

int n; // jada pikkus
int z; // puu lehtede arv
int q; // päringute arv
int x; // jooksev päring

int main() {
	cin >> n;
	// leiame puu lehtede arvu
	z = 1;
	while (z < n) {
		z *= 2;
	}
	// puu lehed on 1-elemendilised koreograafiad
	for (int i = 0; i < n; ++i) {
		a[z + i].la = 1;
		a[z + i].pp = 1;
		a[z + i].sp = 1;
		a[z + i].mp = 1;
	}
	// täidame ülejäänud elemendid alt üles
	for (int i = z; i > 1; ) {
		--i;
		info(i);
	}
	// loeme ja töötleme päringud
	cin >> q;
	for (int i = 0; i < q; ++i) {
		cin >> x;
		// sammu x lehe koht puu massiiviesituses
		x += z - 1;
		// lehe ainus märk on nii vasak kui parem; muutub vastupidiseks
		a[x].vl = !a[x].vl;
		a[x].pl = !a[x].pl;
		// uuendame elemendid teel sellest lehest juureni
		while (x > 1) {
			x /= 2;
			info(x);
		}
		// nüüd on vajalik vastus puu juures olemas
		cout << a[1].mp << endl;
	}
	return 0;
}
