#include<bits/stdc++.h>
using namespace std;
struct Node{
int data;
Node*left;
Node*right;
Node(int x)
{
data=x;
left=NULL;
right=NULL;
}
};
struct cmp{
bool operator()( Node*a, Node*b) {
return a->data>b->data;
}
};
void print(Node*root,string s){
if(root->left==NULL && root->right==NULL){
cout<<s<<" ";
return;
}
print(root->left,s+"0");
print(root->right,s+"1");
}
int main(){
int t,n;cin>>t;string str;
while(t--){
cin>>str;
n=str.length();int arr[n];
priority_queue<Node*,vector<Node*>,cmp>pq;
for(int i=0;i<n;i++){
cin>>arr[i];
Node*newnode=new Node(arr[i]);
pq.push(newnode);
}
while(pq.size()!=1){
Node* m1=pq.top();
pq.pop();
Node* m2=pq.top();
pq.pop();
Node* temp=new Node(m1->data+m2->data);
temp->left=m1;
temp->right=m2;
pq.push(temp);
}
Node* root=pq.top();
string str="";
print(root,str);
cout<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBOb2RlewogICAgaW50IGRhdGE7CiAgICBOb2RlKmxlZnQ7CiAgICBOb2RlKnJpZ2h0OwogICAgTm9kZShpbnQgeCkKICAgIHsKICAgICAgICBkYXRhPXg7CiAgICAgICAgbGVmdD1OVUxMOwogICAgICAgIHJpZ2h0PU5VTEw7CiAgICB9Cn07CnN0cnVjdCBjbXB7CiAgYm9vbCBvcGVyYXRvcigpKCBOb2RlKmEsIE5vZGUqYikgewogICAgICByZXR1cm4gYS0+ZGF0YT5iLT5kYXRhOwogIH0gCn07CnZvaWQgcHJpbnQoTm9kZSpyb290LHN0cmluZyBzKXsKICAgIGlmKHJvb3QtPmxlZnQ9PU5VTEwgJiYgcm9vdC0+cmlnaHQ9PU5VTEwpewogICAgICAgIGNvdXQ8PHM8PCIgIjsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBwcmludChyb290LT5sZWZ0LHMrIjAiKTsKICAgIHByaW50KHJvb3QtPnJpZ2h0LHMrIjEiKTsKfQppbnQgbWFpbigpewogICAgaW50IHQsbjtjaW4+PnQ7c3RyaW5nIHN0cjsKICAgIHdoaWxlKHQtLSl7CiAgICAgICAgY2luPj5zdHI7CiAgICAgICAgbj1zdHIubGVuZ3RoKCk7aW50IGFycltuXTsKICAgICAgICBwcmlvcml0eV9xdWV1ZTxOb2RlKix2ZWN0b3I8Tm9kZSo+LGNtcD5wcTsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgY2luPj5hcnJbaV07CiAgICAgICAgICAgIE5vZGUqbmV3bm9kZT1uZXcgTm9kZShhcnJbaV0pOwogICAgICAgICAgICBwcS5wdXNoKG5ld25vZGUpOwogICAgICAgIH0KICAgICAgICB3aGlsZShwcS5zaXplKCkhPTEpewogICAgICAgICAgICBOb2RlKiBtMT1wcS50b3AoKTsKICAgICAgICAgICAgcHEucG9wKCk7CiAgICAgICAgICAgIE5vZGUqIG0yPXBxLnRvcCgpOwogICAgICAgICAgICBwcS5wb3AoKTsKICAgICAgICAgICAgTm9kZSogdGVtcD1uZXcgTm9kZShtMS0+ZGF0YSttMi0+ZGF0YSk7CiAgICAgICAgICAgIHRlbXAtPmxlZnQ9bTE7CiAgICAgICAgICAgIHRlbXAtPnJpZ2h0PW0yOwogICAgICAgICAgICBwcS5wdXNoKHRlbXApOwogICAgICAgIH0KICAgICAgIE5vZGUqIHJvb3Q9cHEudG9wKCk7CiAgICAgICAgc3RyaW5nIHN0cj0iIjsKICAgICAgICBwcmludChyb290LHN0cik7CiAgICAgICAgY291dDw8ZW5kbDsKICAgIH0KfQ==