#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define siz(x) (int)(x.size())
#define all(x) x.begin(), x.end()
#define debug_arr(x,len) for(int _=1; _<=len; _++) cout<<x[_]<<" "; cout<<'\n';
#define debug(x) cout<<'\n'<<#x<<": "<<x<<'\n';
const int maxN = 1e5+5;
struct ez{int fi, se, thi;};
int n, m, a[maxN], b[maxN], s[maxN], l[maxN], dp[55][1005][1005];
ez trace[55][1005][1005];
void sub2()
{
for(int ac=1; ac<=m; ac+=1)
{
int k;
cin>>a[ac]>>b[ac]>>k;
memset(dp, 0, sizeof(dp));
map<int,bool>mp;
for(int j=1; j<=k; j+=1) cin>>l[j], mp[l[j]] = 1;
for(int i=1; i<=n; i+=1) dp[i][0][0] = 0;
if(!mp[1])
{
dp[1][s[1]][0] = 1;
dp[1][0][s[1]] = 1;
}
for(int i=2; i<=n; i+=1)
{
if(mp[l[i]]) continue;
for(int w1=0; w1<=a[ac]; w1+=1)
{
for(int w2=0; w2<=b[ac]; w2+=1)
{
if(w1 + w2 == 0) continue;
if(dp[i][w1][w2] <= dp[i-1][w1][w2])
{
dp[i][w1][w2] = dp[i-1][w1][w2];
trace[i][w1][w2] = {i-1,w1,w2};
}
if(w1+s[i] <= 1000)
{
if(dp[i][w1+s[i]][w2] <= dp[i-1][w1][w2]+1)
{
dp[i][w1+s[i]][w2] = dp[i-1][w1][w2]+1;
trace[i][w1+s[i]][w2] = {i-1,w1,w2};
}
}
if(w2+s[i] <= 1000)
{
if(dp[i][w1][w2+s[i]] <= dp[i-1][w1][w2]+1)
{
dp[i][w1][w2+s[i]] = dp[i-1][w1][w2]+1;
trace[i][w1][w2+s[i]] = {i-1,w1,w2};
}
}
}
}
}
int ans = 0;
for(int w1=0; w1<=a[ac]; w1+=1)
{
for(int w2=0; w2<=b[ac]; w2+=1)
{
ans = max(ans, dp[n][w1][w2]);
}
}
if(ac == 1)
{
bool stop = 0;
vector<int>res(n+1, 0);
for(int w1=0; w1<=a[ac]; w1+=1)
{
for(int w2=0; w2<=b[ac]; w2+=1)
{
if(dp[n][w1][w2] == ans)
{
int x = n, y = w1, z = w2;
while(x != 1)
{
int last_x = x, last_y = y, last_z = z;
ez tmp = trace[x][y][z];
x = tmp.fi;
y = tmp.se;
z = tmp.thi;
if(last_y != y) res[last_x] = 1;
if(last_z != z) res[last_x] = 2;
// cout<<last_x<<" "<<last_y<<" "<<last_z<<'\n';
// cout<<x<<" "<<y<<" "<<z<<'\n';
}
if(y) res[1] = 1;
if(z) res[1] = 2;
stop = 1;
}
if(stop) break;
}
if(stop) break;
}
cout<<ans<<'\n';
for(int i=1; i<=n; i+=1) cout<<res[i]; cout<<'\n';
}
else cout<<ans<<' ';
}
}
void sub3()
{
sort(s+1, s+n+1);
}
// dp[i][j][k] la so anh toi da co the sao chep khi di den dinh i, j va k la so dung luong da dung trong 2 o cung
int32_t main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>m;
for(int i=1; i<=n; i+=1) cin>>s[i];
sub2();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBzaXooeCkgKGludCkoeC5zaXplKCkpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGRlYnVnX2Fycih4LGxlbikgZm9yKGludCBfPTE7IF88PWxlbjsgXysrKSBjb3V0PDx4W19dPDwiICI7IGNvdXQ8PCdcbic7CiNkZWZpbmUgZGVidWcoeCkgY291dDw8J1xuJzw8I3g8PCI6ICI8PHg8PCdcbic7CmNvbnN0IGludCBtYXhOID0gMWU1KzU7CgpzdHJ1Y3QgZXp7aW50IGZpLCBzZSwgdGhpO307CmludCBuLCBtLCBhW21heE5dLCBiW21heE5dLCBzW21heE5dLCBsW21heE5dLCBkcFs1NV1bMTAwNV1bMTAwNV07CmV6IHRyYWNlWzU1XVsxMDA1XVsxMDA1XTsKCnZvaWQgc3ViMigpCnsKCWZvcihpbnQgYWM9MTsgYWM8PW07IGFjKz0xKQoJewoJCWludCBrOwoJCWNpbj4+YVthY10+PmJbYWNdPj5rOwoJCW1lbXNldChkcCwgMCwgc2l6ZW9mKGRwKSk7CgkJbWFwPGludCxib29sPm1wOwoJCWZvcihpbnQgaj0xOyBqPD1rOyBqKz0xKSBjaW4+Pmxbal0sIG1wW2xbal1dID0gMTsKCQlmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkgZHBbaV1bMF1bMF0gPSAwOwoJCWlmKCFtcFsxXSkKCQl7CgkJCWRwWzFdW3NbMV1dWzBdID0gMTsKCQkJZHBbMV1bMF1bc1sxXV0gPSAxOwoJCX0KCQlmb3IoaW50IGk9MjsgaTw9bjsgaSs9MSkKCQl7CgkJCWlmKG1wW2xbaV1dKSBjb250aW51ZTsKCQkJZm9yKGludCB3MT0wOyB3MTw9YVthY107IHcxKz0xKQoJCQl7CgkJCQlmb3IoaW50IHcyPTA7IHcyPD1iW2FjXTsgdzIrPTEpCgkJCQl7CgkJCQkJaWYodzEgKyB3MiA9PSAwKSBjb250aW51ZTsKCQkJCQlpZihkcFtpXVt3MV1bdzJdIDw9IGRwW2ktMV1bdzFdW3cyXSkKCQkJCQl7CgkJCQkJCWRwW2ldW3cxXVt3Ml0gPSBkcFtpLTFdW3cxXVt3Ml07CgkJCQkJCXRyYWNlW2ldW3cxXVt3Ml0gPSB7aS0xLHcxLHcyfTsKCQkJCQl9CgkJCQkJaWYodzErc1tpXSA8PSAxMDAwKQoJCQkJCXsKCQkJCQkJaWYoZHBbaV1bdzErc1tpXV1bdzJdIDw9IGRwW2ktMV1bdzFdW3cyXSsxKQoJCQkJCQl7CgkJCQkJCQlkcFtpXVt3MStzW2ldXVt3Ml0gPSBkcFtpLTFdW3cxXVt3Ml0rMTsKCQkJCQkJCXRyYWNlW2ldW3cxK3NbaV1dW3cyXSA9IHtpLTEsdzEsdzJ9OwoJCQkJCQl9CgkJCQkJfQoJCQkJCWlmKHcyK3NbaV0gPD0gMTAwMCkKCQkJCQl7CgkJCQkJCWlmKGRwW2ldW3cxXVt3MitzW2ldXSA8PSBkcFtpLTFdW3cxXVt3Ml0rMSkKCQkJCQkJewoJCQkJCQkJZHBbaV1bdzFdW3cyK3NbaV1dID0gZHBbaS0xXVt3MV1bdzJdKzE7CgkJCQkJCQl0cmFjZVtpXVt3MV1bdzIrc1tpXV0gPSB7aS0xLHcxLHcyfTsKCQkJCQkJfQkJCQkJCgkJCQkJfQoKCQkJCX0KCQkJfQoJCX0KCQlpbnQgYW5zID0gMDsKCQlmb3IoaW50IHcxPTA7IHcxPD1hW2FjXTsgdzErPTEpCgkJewoJCQlmb3IoaW50IHcyPTA7IHcyPD1iW2FjXTsgdzIrPTEpCgkJCXsKCQkJCWFucyA9IG1heChhbnMsIGRwW25dW3cxXVt3Ml0pOwoJCQl9CgkJfQoJCWlmKGFjID09IDEpCgkJewoJCQlib29sIHN0b3AgPSAwOwoJCQl2ZWN0b3I8aW50PnJlcyhuKzEsIDApOwoJCQlmb3IoaW50IHcxPTA7IHcxPD1hW2FjXTsgdzErPTEpCgkJCXsKCQkJCWZvcihpbnQgdzI9MDsgdzI8PWJbYWNdOyB3Mis9MSkKCQkJCXsKCQkJCQlpZihkcFtuXVt3MV1bdzJdID09IGFucykKCQkJCQl7CgkJCQkJCWludCB4ID0gbiwgeSA9IHcxLCB6ID0gdzI7CgkJCQkJCXdoaWxlKHggIT0gMSkKCQkJCQkJewoJCQkJCQkJaW50IGxhc3RfeCA9IHgsIGxhc3RfeSA9IHksIGxhc3RfeiA9IHo7CgkJCQkJCQlleiB0bXAgPSB0cmFjZVt4XVt5XVt6XTsKCQkJCQkJCXggPSB0bXAuZmk7CgkJCQkJCQl5ID0gdG1wLnNlOwoJCQkJCQkJeiA9IHRtcC50aGk7CgkJCQkJCQlpZihsYXN0X3kgIT0geSkgcmVzW2xhc3RfeF0gPSAxOwoJCQkJCQkJaWYobGFzdF96ICE9IHopIHJlc1tsYXN0X3hdID0gMjsKCQkJCQkJCS8vIGNvdXQ8PGxhc3RfeDw8IiAiPDxsYXN0X3k8PCIgIjw8bGFzdF96PDwnXG4nOwoJCQkJCQkJLy8gY291dDw8eDw8IiAiPDx5PDwiICI8PHo8PCdcbic7CgkJCQkJCX0KCQkJCQkJaWYoeSkgcmVzWzFdID0gMTsKCQkJCQkJaWYoeikgcmVzWzFdID0gMjsKCQkJCQkJc3RvcCA9IDE7CgkJCQkJfQoJCQkJCWlmKHN0b3ApIGJyZWFrOwoJCQkJfQoJCQkJaWYoc3RvcCkgYnJlYWs7CgkJCX0KCQkJY291dDw8YW5zPDwnXG4nOwoJCQlmb3IoaW50IGk9MTsgaTw9bjsgaSs9MSkgY291dDw8cmVzW2ldOyBjb3V0PDwnXG4nOwoJCX0KCQllbHNlIGNvdXQ8PGFuczw8JyAnOwoJfQp9Cgp2b2lkIHN1YjMoKQp7Cglzb3J0KHMrMSwgcytuKzEpOwp9CgovLyBkcFtpXVtqXVtrXSBsYSBzbyBhbmggdG9pIGRhIGNvIHRoZSBzYW8gY2hlcCBraGkgZGkgZGVuIGRpbmggaSwgaiB2YSBrIGxhIHNvIGR1bmcgbHVvbmcgZGEgZHVuZyB0cm9uZyAyIG8gY3VuZwppbnQzMl90IG1haW4oKQp7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwoJY2luPj5uPj5tOwoJZm9yKGludCBpPTE7IGk8PW47IGkrPTEpIGNpbj4+c1tpXTsKCXN1YjIoKTsKfQk=