#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;
}











