#include <bits/stdc++.h>
#define MAX_N 1050
using namespace std;
int n, m;
map<int, int> a, b, u;
void SizeA( )
{
cout<<a.size()<<endl;
return ;
}
void IntersectionAB( )
{
map<int, int>::iterator it;
for(it=a.begin();it!=a.end();++it)
{
if(b.find(it->first) != b.end())
cout<<it->second<<' ';
}
cout<<endl;
return ;
}
void UnionSetAB( )
{
map<int, int>::iterator it;
for(it=u.begin();it!=u.end();++it)
{
if(a.find(it->first) != a.end() || b.find(it->first) != b.end())
cout<<it->second<<' ';
}
cout<<endl;
return ;
}
void ComplementarySetA( )
{
map<int, int>::iterator it;
bool flags[64];
for(it=a.begin();it!=a.end();++it)
flags[it->second] = true;
for(it=u.begin();it!=u.end();++it)
{
if(flags[it->second] != true)
cout<<it->second<<' ';
}
cout<<endl;
return ;
}
void IsEqualTo( )
{
map<int, int>::iterator it1, it2;
for(it1=a.begin(),it2=b.begin();it1!=a.end()&&it2!=b.end();++it1,++it2)
{
if(a.find(it2->first) == a.end() || b.find(it1->first) == b.end())
{
cout<<0<<endl;
return ;
}
}
if(it1 != a.end() || it2 != b.end())
{
cout<<0<<endl;
return ;
}
cout<<1<<endl;
return ;
}
void IsABelongToB( )
{
map<int, int>::iterator it;
for(it=a.begin();it!=a.end();++it)
{
if(b.find(it->first) == b.end())
{
cout<<0<<endl;
return ;
}
}
cout<<1<<endl;
return ;
}
void IsZeroBelongToA( )
{
if(a.find(0) != a.end())
cout<<1<<endl;
else
cout<<0<<endl;
return ;
}
int main()
{
int i;
int t;
cin>>n;
for(i=1;i<=n;++i)
{
cin>>t;
a[t] = t;
}
cin>>m;
for(i=1;i<=m;++i)
{
cin>>t;
b[t] = t;
}
for(i=0;i<=63;++i)
{
u[i] = i;
}
SizeA( );
IntersectionAB( );
UnionSetAB( );
ComplementarySetA( );
IsEqualTo( );
IsABelongToB( );
IsZeroBelongToA( );
return 0;
}