publicstaticvoidmain(String[] args){int n,m;Integer[] a =newInteger[1000005];Scanner sc =newScanner(System.in); n =sc.nextInt(); m =sc.nextInt();for(int i =1;i<=n;i++){ a[i]=sc.nextInt(); }for(int i =1;i<=m;i++){int target =sc.nextInt();int l =1;int r = n;while(r-l>1){int mid = (l+r)/2;if(target <= a[mid]){ r = mid; }else{ l = mid; } }int ans;if(a[l]==target) ans = l;elseif(a[r]==target) ans = r;else ans =-1;System.out.print(ans +" "); } }
static boolean judge(long m1){
int count = 0;
int i = 1;
int now = 0;
while(i<n+1){
if(a[i]-a[now]<m1){
count++;
}else{
now = i;
}
i++;
}
if(count>m) return false;
else return true;
}
import java.util.Scanner;
class Main {
static long[] a = new long[50005];
static int len,n,m;
static boolean judge(long m1){
int count = 0;
int i = 1;
int now = 0;
while(i<n+1){
if(a[i]-a[now]<m1){
count++;
}else{
now = i;
}
i++;
}
if(count>m) return false;
else return true;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
len = sc.nextInt();
n = sc.nextInt();
m = sc.nextInt();
for(int i = 1;i<=n;i++){
a[i]=sc.nextInt();
}
long r = len, l = 1;
while(r-l>1){
long mid = (l+r)/2;
if(!judge(mid)){
r = mid;
}else{
l = mid;
}
}
long ans;
if(judge(r)) ans = r;
else if(judge(l)) ans = l;
else ans = -1;
System.out.print(ans);
}
}