#include <bits/stdc++.h>
using namespace std;
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int N;
  cin >> N;
  vector<int> S(N);
  for (int i = 0; i < N; i++) {
    cin >> S[i];
  }
  for (int i = 18; i >= 0; i--) {
    vector<int> T;
    vector<int> U;
    for (int x : S)
      if (x < (1 << i)) {
        int tx = x;
        for (int y : T) x = min(x, x ^ y);
        if (x != 0) {
          T.push_back(x);
          U.push_back(tx);
        }
      }
    if (U.size() == i) {
      cout << i << '\n';
      for (int j = 0; j < 1 << i; j++) {
        int ans = 0;
        int g = j ^ j >> 1;
        for (int k = 0; k < i; k++)
          if (g >> k & 1) {
            ans ^= U[k];
          }
        cout << ans << ' ';
      }
      cout << '\n';
      return 0;
    }
  }
}
