#include<iostream>
#include<queue>
using namespace std;
int L, P, N;
const int MAX_N = 10005;
int A[MAX_N], B[MAX_N];
priority_queue<int> que;
int main() {
scanf("%d%d%d", &L, &P, &N);
int tank = P; int Res = 0;
int CurrentPos = 0;
for (int i = 0; i < N; i++) {
scanf("%d", &A[i]);
}
for (int i = 0; i < N; i++) {
scanf("%d", &B[i]);
}
A[N++] = L;
for (int i = 0; i < N; i++) {
int d = A[i] - CurrentPos;
while (tank - d < 0) {
if (que.empty()) {
printf("-1\n"); return 0;
}
int TmpOil = que.top(); que.pop();
tank += TmpOil; Res++;
}
tank = tank - d;
CurrentPos = A[i];
que.push(B[i]);
}
printf("%d\n", Res);
return 0;
}