#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
void FWT(vector<ll> &a, bool inv) {
    int n = (int)a.size();
    for(int step = 1; step < n; step <<= 1) {
        for(int i = 0; i < n; i += step << 1) {
            for(int j = 0; j < step; j++) {
                ll x = a[i + j];
                ll y = a[i + j + step];
                a[i + j] = x + y;
                a[i + j + step] = x - y;
            }
        }
    }
    if(inv) {
        for(int i = 0; i < n; i++) a[i] /= n;
    }
}
const int N = 200005, X = (1 << 20);
int arr[N];
int main() {
    cin.tie(0)->sync_with_stdio(false);
    int n;
    cin >> n;
    for(int i = 0; i < n; i++) cin >> arr[i];

    vector<int> pref(n + 1, 0);
    for(int i = 0; i < n; i++) pref[i + 1] = pref[i] ^ arr[i];

    int k = (1 << 20);

    vector<ll> F(k, 0);
    for(int x : pref) F[x]++;

    vector<ll> A = F;
    FWT(A, 0);
    for(int i = 0; i < k; i++) A[i] = A[i] * A[i];
    FWT(A, 1);

    vector<int> ans;
    if(A[0] > n + 1) ans.push_back(0);
    for(int i = 1; i < k; i++) {
        if(A[i] > 0) ans.push_back(i);
    }

    cout << ans.size() << "\n";
    for(auto x : ans) {
        cout << x << " ";
    }
    cout << "\n";
}
