#pragma GCC optimize("O2")
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 1e5+5;


int n, k;
map<int,int> mp;
array<int,2> a[MAXN];
int ans[MAXN];

void solve(){
    cin >> n >> k;
    for(int i = 1; i <= k; ++i){
        cin >> a[i][0];
        a[i][1] = i;
        mp[a[i][0]] = i;
    }
    if(n == 1){
        cout << 1 << '\n';
        return;
    }
    sort(a+1,a+k+1);
    for(int i = 1; i <= k; ++i){
        if(a[i][0]%2==0){
            int m = 0;
            int x = a[i][0];
            while(x%2==0){
                ++m;
                x /= 2;
            }
            ans[a[i][1]] = ans[mp[x]];
            while(m--) ans[a[i][1]] = 2*ans[a[i][1]] ^ ans[mp[x]];
            continue;
        }
        for(int j = 1; a[j][0] <= a[i][0]/a[j][0]; ++j){
            if(a[i][0]%a[j][0]==0){
                ans[a[i][1]] ^= a[j][0];
                if(a[j][0] != a[i][0]/a[j][0]) ans[a[i][1]] ^= a[i][0]/a[j][0];
            }
        }
    }
    for(int i = 1; i <= k; ++i) cout << ans[i] << ' ';
}

int32_t main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    int qqq=1;
    //cin >> qqq;
    while(qqq--)solve();
    return 0;
}