#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
//英语 看博友分析 抄博友程序 dfs 巧妙 背
int a[108];
int on[108];
int off[108];
int n;
int m;
vector<string> ve;
map<string,int> mp;
void b1()//抄博友巧妙
{
for(int i=1;i<=n;i++)
{
a[i]=a[i]^1;
}
}
void b2()
{
for(int i=1;i<=n;i=i+2)
{
a[i]=a[i]^1;
}
}
void b3()
{
for(int i=2;i<=n;i=i+2)
{
a[i]=a[i]^1;
}
}
void b4()
{
for(int i=1;i<=n;i=i+3)
{
a[i]=a[i]^1;
}
}
bool check()
{
for(int i=1;i<=n;i++)
{
if(on[i]==1 && a[i]==0)
{
return false;
}
}
for(int i=1;i<=n;i++)
{
if(off[i]==1 && a[i]==1)
{
return false;
}
}
return true;
}
void dfs(int x)
{
//cout<<x<<endl;
if(x==m)
{
if(check())
{
string s="";
for(int i=1;i<=n;i++)
{
if(a[i]==1)
{
s=s+"1";
}else
{
s=s+"0";
}
}
if(mp[s]==0)
{
mp[s]=1;
ve.push_back(s);
}
}
return;
}
b1();
dfs(x+1);
b1();//抄博友程序 巧妙
b2();
dfs(x+1);
b2();
b3();
dfs(x+1);
b3();
b4();
dfs(x+1);
b4();
}
int main()
{
cin>>n;
for(int i=1;i<=100;i++)
{
a[i]=1;
}
cin>>m;
if(m>2)
{
if(m&1)//抄博友程序 巧妙
{
m=3;
}else
{
m=4;
}
}
int t;
while(cin>>t)
{
if(t==-1)
{
break;
}
on[t]=1;
}
while(cin>>t)
{
if(t==-1)
{
break;
}
off[t]=1;
}
dfs(0);
sort(ve.begin(),ve.end());
for(int i=0;i<ve.size();i++)
{
cout<<ve[i]<<endl;
}
return 0;
}