を、 に含まれる の個数の偶奇とします。すべての要素を長さ の区間に分けた場合の XOR 値は です。
区間 内の単独区間を一つの区間に置き換えると、XOR 値の変化量は です。したがって、互いに重ならない区間を選び、それぞれの変化量を XOR する問題として考えられます。
MEX が の区間の変化量は です。MEX が の区間には が含まれません。 が奇数個なら変化量は であり、偶数個なら、その区間内にある連続する二つの の位置の間の、 を含まない区間に置き換えられます。この短い区間の変化量は です。
次に MEX が の区間を考えます。その内部から をすべて含む最短の部分区間 を選びます。両端の値は 未満で、部分区間内にそれぞれちょうど一度だけ現れます。このような区間を と呼びます。左端を固定して出現回数と MEX を更新することで列挙できます。
除去した部分に含まれる が偶数個なら、本質的な区間だけで同じ変化量を得られます。奇数個なら、元の区間内で本質的な区間の左側または右側にある最も近い まで拡張します。これで がちょうど一つ増え、元の区間に が存在しないため MEX は変わりません。よって、本質的な区間と、MEX を変えない左右いずれか一方への拡張だけを候補にすれば十分です。候補の総数は 個です。
を、接頭区間 内で互いに重ならない候補を選んで得られる変化量の XOR 値の集合とします。位置 を使わない場合と、右端が の候補 を選び、 の各値にその変化量を XOR する場合を遷移させます。
列全体の MEX を とすると、任意の区間の MEX は 以下です。XOR 値は 未満なので、ビット集合を用いた DP により時間計算量 、空間計算量 で解けます。答えは に対する の最大値です。