#include<cstdio>
using namespace std;
int n,q,isprime[100000001]={0},prime[1000001],cnt=0;
int main(){
scanf("%d%d",&n,&q);
isprime[1]=1;
for(int i=2;i<=n;i++){
if(!isprime[i])
prime[cnt++]=i;
for(int j=0;j<cnt&&i*prime[j]<100000001;j++){
isprime[i*prime[j]]=1;
if(i%prime[j]==0){
break;
}
}
}
for(int i=0;i<q;i++){
int k;
scanf("%d",&k);
printf("%d\n",prime[k-1]);
}
return 0;
}
用的是欧拉筛,是scanf printf,为何测试点三还是TLE,求助神犇