#include<stdio.h>
long int j3,t[10001],n,m,p,i,v[10001],ok,j,putere,N,M,j2,nr;
void cre(long int *v, long int n){
long int i,aux,c,p;
for (i=2;i<=n;i++) {
//introduc v[i] in heap
c = i;
p = i>>1;
while ((p)&&(v[c]>v[p])) {
aux = v[c];
v[c] = v[p];
v[p] = aux;
c = p;
p = p>>1;
}
}
}
void corect(long int poz, long int *v, long int n){
long int aux,p,c;
// aux = v[1];
// v[1] = v[i];
// v[i] = aux;
p = poz;
c = p<<1;
while (c<=n) {
if ((c+1<=n) && (v[c+1]>v[c]))
c++;
if (v[c]>v[p]) {
aux = v[c];
v[c] = v[p];
v[p] = aux;
p = c;
c = p<<1;
} else break;
}
}
void s(long int *v, long int n) {
long int i,aux,p,c;
cre(v,n);
for (i=n;i>1;i--) {
aux = v[1];
v[1] = v[i];
v[i] = aux;
corect(1,v,i-1);
}
}
int main(){
FILE *f=fopen("nextseq.in","r");
fscanf(f,"%d %d %d",&n,&m,&p);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
}
s(v,n);
for(i=1;i<=n;i++){
t[v[i]]=i-1;;
}
if(p!=m){
putere=1;
for(i=1;i<=m;i++){
fscanf(f,"%d",&v[i]);
}
for(i=m;i>=1;i--){
j=v[i];
M+=t[j]*putere;
putere*=n;
}
nr+=(putere-M-1);
j2=putere;
putere=1;
for(i=1;i<=p;i++){
fscanf(f,"%d",&v[i]);
}
for(i=p;i>=1;i--){
j=v[i];
N+=t[j]*putere;
putere*=n;
}
nr+=N;
putere=j2;
for(i=m+1;i<=p-1;i++){
putere*=n;
nr+=putere;
}
}
else{
for(i=1;i<=m;i++){
fscanf(f,"%d",&v[i]);
}
putere=1;
for(i=m;i>=1;i--){
j=v[i];
M+=t[j]*putere;
putere*=n;
}
putere=1;
for(i=1;i<=p;i++){
fscanf(f,"%d",&v[i]);
}
for(i=p;i>=1;i--){
j=v[i];
N+=t[j]*putere;
putere*=n;
}
nr=N-M-1;
}
fclose(f);
FILE *g=fopen("nextseq.out","w");
fprintf(g,"%d",nr);
fclose(g);
return 0;
}