#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//看博友分析重要 抄博友程序 改博友程序 汉诺塔 背
/*
int main()
{
int T,i,j,n,m;
int a[5],b[100005],c[100005];
while(~scanf("%d",&T))
{
for(i=1; i<=3; i++)
scanf("%d",&a[i]);
for(i=1; i<=3; i++)
{
for(j=1; j<=a[i]; j++)
{
scanf("%d",&n);
b[n]=i; //记录每个盘子所在的柱子位置
}
}
c[0]=1;
for(i=0; i<T; i++)
c[i+1]=(c[i]*2)%1000000;
int s1=b[T],s2=b[T-1],s=0; //s1为最大的盘子位置,s2为第二大的盘子位置
//移动盘子从小到大移动
for(i=T-1; i>0; i--)
{
if(s1!=s2) //假如盘子不在正确的位置上,将其移动
{
s=(s+c[i-1])%1000000;
s2=6-s1-s2; //修改博友程序wa 记录剩余盘子新的位置
}else{
s2=b[i]; //修改博友程序wa
}
}
printf("%d\n%d\n",b[T],s);
}
return 0;
}*/
int a[100008];
int b[100008];
int mi[100008];
int mod=1000000;
int main()
{
mi[0]=1;
for(int i=1;i<=100000;i++)
{
mi[i]=mi[i-1]*2%mod;
}
int n;
cin>>n;
for(int i=1;i<=3;i++)
{
cin>>a[i];
}
for(int i=1;i<=3;i++)
{
for(int j=1;j<=a[i];j++)
{
int t;
cin>>t;
b[t]=i;//抄博友程序
}
}
int s1=b[n];
int jg=0;
//移动盘子从小到大
for(int i=n-1;i>=1;i--)
{
int s2=b[i];
if(s1!=s2)
{
jg=(jg+mi[i-1])%mod;
s1=6-s1-s2;
}
}
cout<<b[n]<<endl;
cout<<jg<<endl;
return 0;
}