#include <iostream>
#include <stack>
#include <cstring>
using namespace std;

string str;
int k;
int t;
int c;
bool recursia(stack<long long> & stek, int curr)
{
    if(stek.size()==0)
    {
        if(curr==k)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        t=stek.top();
        stek.pop();
        c=t|curr;
        str.push_back('|');
        if(recursia(stek, c))
        {
            return true;
        }
        str.pop_back();
        str.push_back('&');
        c=t&curr;
        if(recursia(stek, c))
        {
            return true;
        }
        return false;
    }
}

int main()
{
    int t;
    cin >> t;
    int n;
    int a;

    for(int p=0; p<t; p++)
    {
        cin >> n >> k;
        stack<long long> stek;
        str.clear();
        for(int i=0; i<n; i++)
        {
            cin >> a;
            stek.push(a);
        }
        t=stek.top();
        stek.pop();
        if(recursia(stek, t))
        {
            cout << "YES" << endl;
            cout << str << endl;
        }
        else
        {
            cout << "NO";
        }
    }














    return 0;
}
