#include <iostream>
#include <vector>
#include <cstdint>
#include <algorithm>

using namespace std;

// uint64_t xor_delilaca(const vector<uint64_t> &vec, const uint64_t &x)
// {
//     uint64_t val = 0;
//     for (uint64_t i = 0; i < vec.size(); ++i)
//       if (vec[i] <= x and x % vec[i] == 0)
//       {
//           val ^= vec[i];
//           // cout << vec[i] << ' ';
//       }
    
//     return val;
// }

uint64_t xd_assume_sorted(const vector<uint64_t> &vec, const uint64_t &i)
{
    uint64_t val = 0;
    for (int j = 0; j <= i; ++j)
    {
        val ^= vec[j];
    }
    
    return val;
}

int main(void)
{
    uint64_t n, k;
    cin >> n >> k;
    
    vector<uint64_t> d(k);
    for (uint64_t i = 0; i < k; ++i)
      cin >> d[i];
    
    sort(d.begin(), d.end());
    for (uint64_t i = 0; i < k; ++i)
    {
        cout << xd_assume_sorted(d, i) << ' ';
    }
    
    return 0;
}