#include <bits/stdc++.h>

using namespace std;

int bin(int a){
    int d,x,p;
    x=a;
    p=0;
    d=0;
    while (x!=0){
        x=x/2;
        p++;
    }
    for (int i=p-1;i>=0;i--){
        int f=pow(2,i);
        if (a/f==1)
            d+=pow(10,i);
        a=a%f;
    }
    return d;
}
int xoor(int a, int b){
    int aa=bin(a);
    int bb=bin(b);
    int i=1;
    int c=0;
    while (aa>=pow(10,i-1) || bb>=pow(10,i-1)){
        int q=pow(10,i);
        int aaa=aa%q;
        aaa=10*aaa/q;
        int bbb=bb%q;
        bbb=10*bbb/q;
        if (aaa==1 && bbb==0){
            int k=pow(10,i-1);
            c+=k;
        }
        if (aaa==0 && bbb==1){
            int k=pow(10,i-1);
            c+=k;
        }
        i++;
    }
    return c;
}
int aand(int a, int b){
    int aa=bin(a);
    int bb=bin(b);
    int i=1;
    int c=0;
    while (aa>=pow(10,i-1) && bb>=pow(10,i-1)){
        int q=pow(10,i);
        int aaa=aa%q;
        aaa=10*aaa/q;
        int bbb=bb%q;
        bbb=10*bbb/q;
        if (aaa==1 && bbb==1){
            int k=pow(10,i-1);
            c+=k;
        }

        i++;
    }
    return c;
}
vector<int> delioci (int n){
    vector<int> v;
    for (int i=1;i<=n;i++){
        if (n%i==0)
            v.push_back(i);
    }
    return v;
}
int binnaz(int n){
    int k;
    int i=0;
    while (n!=0){
        int q=pow(2,i);
        k+=((n%10)*q);
    n/=10;
    i++;
    }
    return k;
}
void ispis1broj(int n){
    vector<int> v=delioci(n);
    int c=v[0];

    for (int i=0;i<v.size()-1;i++){
        c=binnaz(xoor(c,v[i+1]));
    }
    cout<<c<<" ";
}
int main()
{
    int n,d;
    cin>>n>>d;
    vector<int> w;
    for (int i=0;i<d;i++){
        int q;
        cin>>q;
        w.push_back(q);}

    for (int i=0;i<w.size();i++){
        ispis1broj(w[i]);
    }

    return 0;
}