#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
#define MAXN 100001
bool prime(int x){
/*if(x==2||x==3){
return true;
}else if(x%2==0||x%3==0){
return false;
}else{
int sq=(int)sqrt(x);
for(int i=2;i<=sq;i++){
if(x%i==0){
return false;
}
}
return true;
}*/
if (x <= 1) return false;
for (int i = 2; i * i <= x; i++)
if (x % i == 0) return false;
return true;
}
int main()
{
int D,N,Q,s;
scanf("%d %d %d",&D,&N,&Q);
if(!prime(D)){
D++;
}
int a[MAXN];
memset(a,0,sizeof(a));
for(int i=0;i<N;i++){
int t;
scanf("%d",&t);
int p=t%D,flag=1;
for(int d=0;d<D;d++){
if(a[(p+d*d)%D]==0){
a[(p+d*d)%D]=t;
flag=0;
break;
}
}
if(flag){
printf("%d cannot be inserted.\n",t);
}
}
double tol=0;
for(int i=0;i<Q;i++){
int t;
scanf("%d",&t);
int p=t%D,cost=1;
for(int d=0;d<D;d++){
if(a[(p+d*d)%D]==0||a[(p+d*d)%D]==t){
break;
}
cost++;
}
tol+=cost;
}
printf("%.1lf",tol/Q);
return 0;
}