#include<bits/stdc++.h>
using namespace std;
int fx[101][100001];
int length[101];
int main()
{
int n,k;
cin>>n>>k;
string s;
cin>>s;
int di=0,zhi=0;
int flag=0;
for(int i=5;i<s.size();i++)
{
if(s[i]=='+')
{
if(di==0)
fx[zhi][0]++;
fx[zhi][0]+=di;
flag=0;
zhi=0;
di=0;
}
else if('0'<=s[i]&&s[i]<='9')
{
if(flag==0)
{
di=di*10+s[i]-'0';
}
else
{
zhi=zhi*10+s[i]-'0';
}
}
else if(s[i]=='x')
flag=1;
}
if(di==0)
fx[zhi][0]++;
fx[zhi][0]+=di;
flag=0;
zhi=0;
di=0;
for(int i=n;i>=0;i--)
{
while(fx[i][0]!=0)
{
length[i]++;
fx[i][length[i]]=fx[i][0]%10;
fx[i][0]/=10;
}
}
for(int i=1;i<=k;i++)
{
n--;
for(int j=0;j<=n;j++)
{
for(int k=1;k<=length[j+1];k++)
{
fx[j][k]=fx[j+1][k]*(j+1);
}
for(int k=1;k<length[j+1];k++)
{
fx[j][k+1]+=fx[j][k]/10;
fx[j][k]%=10;
}
length[j]=length[j+1];
while(fx[j][length[j]]>=10)
{
fx[j][length[j]+1]+=fx[j][length[j]]/10;
fx[j][length[j]]%=10;
length[j]++;
}
}
}
int m;
cin>>m;
int x0;
while(m--)
{
cin>>x0;
int ans[100001]={0};
int anslen=0;
int mians[100001];
for(int i=n;i>=0;i--)
{
memset(mians,0,sizeof(mians));
for(int j=1;j<=length[i];j++)
mians[j]=fx[i][j];
int len=length[i];
for(int j=1;j<=i;j++)
{
for(int k=1;k<=len;k++)
mians[k]*=x0;
for(int k=1;k<len;k++)
{
mians[k+1]+=mians[k]/10;
mians[k]%=10;
}
while(mians[len]>=10)
{
len++;
mians[len]=mians[len-1]/10;
mians[len-1]%=10;
}
}
anslen=max(anslen,len);
for(int j=1;j<=anslen;j++)
ans[j]+=mians[j];
for(int j=1;j<anslen;j++)
{
ans[j+1]+=ans[j]/10;
ans[j+1]%=10;
}
if(ans[anslen]>=10)
{
ans[anslen+1]=ans[anslen]/10;
ans[anslen]%=10;
anslen++;
}
}
for(int i=anslen;i>=1;i--)
cout<<ans[i];
cout<<endl;
}
return 0;
}