#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
#define maxn 200005
#define Maxc 26
using namespace std;
char s[maxn];
int ch[maxn][Maxc] , len[maxn] , fail[maxn] , last , cur , cnt_p=1 , dp[maxn];
int c[maxn] , sa[maxn];
inline void Insert(int c)
{
int p,q;
len[cur = cnt_p++] = len[last] + 1;
for(p = last;p!=-1 && ch[p][c] == 0;p =fail[p]) ch[p][c] = cur;
if(p==-1) fail[cur] = 0;
else
{
q = ch[p][c];
if(len[q] == len[p]+1) fail[cur] = q;
else
{
int rec = cnt_p++;
fail[rec] = fail[q] , len[rec] = len[p] + 1;
memcpy(ch[rec] , ch[q] , sizeof ch[q]);
for(;p!=-1 && ch[p][c] == q;p = fail[p]) ch[p][c] = rec;
fail[cur] = fail[q] = rec;
}
}
last = cur;
}
void dfs(int now,int num)
{
if(num)
for(int j=0;j<Maxc;j++)
if(ch[now][j])
{
if(dp[ch[now][j]] < num) num-=dp[ch[now][j]];
else {printf("%c",j+'a') , dfs(ch[now][j] , num-1);return;}
}
}
bool vis[maxn];
void ser(int now)
{
vis[now] = 1;
for(int i=0;i<Maxc;i++)
if(ch[now][i])
{
if(!vis[ch[now][i]]) ser(ch[now][i]);
dp[now]+=dp[ch[now][i]];
}
}
int main()
{
scanf("%s",s);
int Len = strlen(s);
fail[0] = -1;
for(int i=0;i<Len;i++)
Insert(s[i]-'a');
for(int i=1;i<cnt_p;i++) dp[i] = 1;
ser(0);
int q,u;
scanf("%d",&q);
for(;q--;)
{
scanf("%d",&u);
dfs(0,u);
puts("");
}
}