module main; // https://kmjp.hatenablog.jp/entry/2015/04/17/0900 より // ビット演算、行列、線形独立 import std; void main() { // 入力 int N = readln.chomp.to!int; auto A = readln.split.to!(ulong[]); // 答えの計算 int ret = 0; foreach (i, a; A) { if (!a) continue; ret++; // 最上位ビットの1つ下 int x = 0; while (1L << (x + 1) <= a) x++; foreach (y; i + 1 .. N) if (A[y] & (1L << x)) A[y] ^= a; } // 答えの出力 writeln(1uL << ret); }