#include<bits/stdc++.h>
#define ll long long // 定义长整型别名,方便使用
using namespace std;
const int N = 1e8+10; // 筛素数范围的上限
int pre[N / 10], k; // pre数组存储素数,k记录素数个数
bool vis[N]; // 标记数组,vis[i]=true表示i不是素数
// 欧拉筛法(线性筛)实现
void ola()
{
for(int i = 2; i < N; i++) // 从2开始遍历每个数
{
if(vis[i] == 0) // 如果i是素数
pre[++k] = i; // 将i存入素数数组
// 用当前已找到的素数筛去合数
for(int j = 1; j <= k; j++)
{
// 防止pre[j]*i超出数组范围
if(pre[j] > N / i) break;
// 标记pre[j]*i为合数
vis[pre[j] * i] = 1;
// 关键优化:保证每个合数只被最小质因子筛去
if(i % pre[j] == 0) break;
}
}
}
int main()
{
// 预处理筛出所有素数
ola();
// 输入处理
int n, q;
cin >> n >> q; // n为范围,q为查询次数
while(q--)
{
int k;
cin >> k; // 查询第k小的素数
cout << pre[k] << endl; // 直接输出预处理结果
}
return 0;
}