#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    long long n,k;
    cin >> n >> k;

    vector<long long> nesortiran(k);
    vector<long long> sortiran(k);

    for(long long i=0;i<k;i++)
    {
        cin >> nesortiran[i];
        sortiran[i]=nesortiran[i];
    }// mozda je moguce odrediti delioce pri unosu al meni to deluje tesko, vraticemo se da optimizujemo ako mora



    sort(sortiran.begin(), sortiran.end());// odmah ovde imam sve delioce
    // posle ovoga moram da napravim nacin da pamtim u prefiksu delioce svakog

    // jer realnost je da sadrzi delioce delioca, a posto vam je broj 10^18 meni je jasno da nema vajde racunati
    // tj k je 10^5 sto je apsurd da ja racunam
    vector<long long> izracunati(k);// e sad kako prolazimo kroz sortirani, inace bi isli od 1 opet al ovako koristimo prefikse
    // a sve moze na jednom posto trazimo za svaki jedan broj tj xor
    // a xor je isti bez obzira na redosled

    /*for(long long i=0;i<k;i++)
    {

    }*/

    //cout << "Hello world!" << endl;
    return 0;
}