#include <cstdio>
#include <algorithm>
#define MAX 6000000
#define MaxL 10000
using namespace std;
typedef int Big[40005];
char f[MAX];
int pos=0,v[MaxL],first[MaxL],last[MaxL];
Big ANSWER,AUX;
void r(int &nr)
{
nr=0;
while(f[pos]<'0'||f[pos]>'9')
pos++;
while(f[pos]>='0'&&f[pos]<='9')
nr=nr*10+f[pos++]-'0';
}
int lenght(int nr)
{
int l=1;
while(nr>0)
l*=10;
return l;
}
int binsearch(int value)
{
int lw=1,mid,hi=v[0];
while(lw<=hi)
{
mid=(lw+hi)>>1;
if(v[mid]<value)
lw=mid+1;
else if(v[mid]>value)
hi=mid-1;
else return mid;
}
return lw;
}
void Divide(Big &A,Big B,int nr)
{
int t=0,size=0;
for(int i=B[0];i>0;i--)
{
t=t*10+B[i];
if(t>=nr)
{
size++;
A[size]=t/nr;
t%=nr;
}
}
for(int i=size+1;i<=A[0];i++)
A[i]=0;
A[0]=size;
}
void Multiply(Big &A,Big B,int nr)
{
int i=1,t=0;
while(i<=B[0]||t>0)
{
A[i]=B[i]*nr+t;
t=A[i]/10;
A[i]%=10;
i++;
}
A[0]=i-1;
}
void Sum(Big &A,Big B)
{
int i=1,t=0;
while(i<=A[0]||i<=B[0]||t>0)
{
A[i]+=t+B[i];
t=A[i]/10;
A[i]%=10;
i++;
}
A[0]=i-1;
}
void solve()
{
Big power={1,1},aux;
int ways;
for(int i=1;i<=first[0]+1;i++)
Multiply(power,power,v[0]);
for(int i=first[0]+1;i<last[0];i++)
{
Sum(ANSWER,power);
Multiply(power,power,v[0]);
}
Big Power={1,1};
for(int i=first[0];i>0;i--)
{
Big aux={1,1};
ways=v[0]-binsearch(first[i]);
Multiply(aux,Power,ways);
Multiply(Power,Power,v[0]);
Sum(ANSWER,aux);
}
Big POW={1,1};
for(int i=1;i<last[0];i++)
Multiply(POW,POW,v[0]);
for(int i=1;i<=last[0];i++)
{
Big aux={1,1};
ways=binsearch(last[i])-1;
if(ways>0)
{
Multiply(aux,POW,ways);
Sum(ANSWER,aux);
}
Divide(aux,POW,v[0]);
for(int j=1;j<=aux[0];j++)
POW[aux[0]-j+1]=aux[j];
for(int j=aux[0]+1;j<=POW[0];j++)
POW[j]=0;
POW[0]=aux[0];
}
}
int main()
{
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
fread(f,1,MAX,stdin);
r(v[0]);r(first[0]);r(last[0]);
for(int i=1;i<=v[0];i++)
r(v[i]);
sort(v+1,v+1+v[0]);
for(int i=1;i<=first[0];i++)
r(first[i]);
for(int i=1;i<=last[0];i++)
r(last[i]);
solve();
for(int i=ANSWER[0];i>0;i--)
printf("%d",ANSWER[i]);
return 0;
}