#include<bits/stdc++.h>
using namespace std;
const int nn=1e6+5,mm=1e6+5;
int s,t,ans[nn],ans2[mm],mx;
struct node{
int b,id;
}x[nn];
bool cmp(node l1,node l2){
if(l1.b==l2.b) return l1.id<l2.id;
return l1.b>l2.b;
}
int main(){
cin>>s>>t;
while(t--){
int n,xx,y;
scanf("%d%d%d",&n,&xx,&y);
mx=0;
for(int i=1;i<=n;i++)
scanf("%d",&x[i].b),x[i].id=i,mx=max(mx,x[i].b);
for(int i=0;i<=mx;i++) ans[i]=ans2[i]=0;
sort(x+1,x+n+1,cmp);
for(int i=1;i<=n;i++){
int lstwz=n;
for(int j=i+1;j<=n;j++){
if(x[j].b!=x[i].b){
lstwz=j-1;
break;
}
}
if((lstwz-i+1)%2==0&&y>0){
ans[x[lstwz].id-1]=1;
y--;
ans2[x[i].b]=1;
}
else if((lstwz-i+1)%2==1) ans2[x[i].b]=1;
i=lstwz;
}
bool p=false;
for(int i=mx;i>=0;i--) {
if(ans2[i]!=0) p=true;
if(p) printf("%d",ans2[i]);
}
if(!p) printf("0");
putchar('\n');
if(y!=0){
for(int i=1;i<n;i++){
if(ans[i]==0){
ans[i]=1;
y--;
}
if(y==0) break;
}
}
for(int i=1;i<n;i++){
if(ans[i]==1) putchar('|');
else putchar('^');
}
putchar('\n');
}
return 0;
}
https://www.luogu.com.cn/record/169148056