#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
const int N=1000000;
int a[20];
int mark[N];
int ans[N];
int n,m;
string s;
void makezero()
{
for(int i=0;i<=1000000;i++)
a[i]=0;
}
void makefalse()
{
for(int i=0;i<=1000000;i++)
mark[i]=-1;
}
void move()
{
int i;
if(a[1]==1)
{
if(a[n]==0)
a[n]=1;
else
a[n]=0;
}
int temp=a[1];
for(i=1;i<n;i++)
a[i]=a[i+1];
if(temp==1)
a[n]=0;
else
a[n]=1;
}
int tonum()
{
int two=1,i;
int b=0;
for(i=n;i>=0;i--)
{
b=b+two*a[i];
two=two*2;
}
return b;
}
void printresult(int x)
{
int i;
for(i=1;i<=n;i++)
a[i]=0;
for(i=n;i>=1;i--)
{
a[i]=x%2;
x=x/2;
}
for(i=1;i<=n;i++)
if(a[i]==1)
cout<<'+';
else
cout<<'-';
cout<<endl;
}
int main()
{
int i,j,k,t,b,c,d,time,rep;
cin>>t;
for(k=1;k<=t;k++)
{
makefalse();
cin>>n>>m;
cin>>s;
a[0]=1;
for(i=0;i<s.size();i++)
if(s[i]=='+')
a[i+1]=1;
else
a[i+1]=0;
mark[tonum()]=1;
ans[0]=tonum();
ans[1]=tonum();
time=1;
while(1)
{
move();
time++;
b=tonum();
if(mark[b]!=-1)
{
rep=mark[b];
break;
}
else
{
ans[time]=b;
mark[b]=time;
}
}
time--;
cout<<"Experiment #"<<k<<":"<<endl;
for(i=1;i<=m;i++)
{
cin>>c;
c++;
if(time>=c)
printresult(ans[c]);
else
{
d=c-rep+1;
d=d%(time-rep+1);
if(d==0)
printresult(ans[time]);
else
printresult(ans[d+rep-1]);
}
}
}
return 0;
}