#include using namespace std; int main() { int N; cin >> N; bool matrix[N][63]; for (int i = 0; i < N; i++) { long long A; cin >> A; for (long long j = 0; j < 63; j++) { matrix[i][j] = A & ((long long)1 << j); } } for (int i = 0; i < N; i++) { int min_bit = 100; int min_index = -1; for (int j = i; j < N; j++) { for (int k = 0; k < 63; k++) { if (matrix[j][k]) { if (k < min_bit) { min_index = j; min_bit = k; } } } } if (min_index == -1) break; for (int k = 0; k < 63; k++) { swap(matrix[i][k], matrix[min_index][k]); } for (int j = i + 1; j < N; j++) { if (matrix[j][min_bit]) { for (int k = 0; k < 63; k++) { matrix[j][k] ^= matrix[i][k]; } } } } long long ans = 0; for (int i = 0; i < N; i++) { bool flag = false; for (int j = 0; j < 63; j++) { flag |= matrix[i][j]; } ans += flag; } cout << ((long long)1 << ans) << endl; }