#include<iostream>
#include<queue>
#include<cstdio>
#include<bitset>
#include<cstring>
#define int long long
#define F(i,a,b) for(int i=(a);i<=(b);i++)
using namespace std;
const int N=1e8+2,M=1e6+5;
int read(){
int x=0,f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int n,q,prime[M],tot;
bitset <N> a;
signed main(){
n=read(),q=read();
for(int i=2;i<=n;i++){
if(!a[i]) a[i]=1,prime[++tot]=i;
for(int j=1;j<=tot&&i*prime[j]<=n;j++){
a[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
while(q--){
int k=read();
printf("%d\n",prime[k]);
}
return 0;
}
调了挺久就是找不到哪错了qwq。