#include<bits/stdc++.h>
using namespace std;
struct cow{
int a,b;
}ar[200010];
bool cmp(cow p,cow q)
{
return p.a>q.a;
}
int main()
{
priority_queue<int> pq;
int n,l,q;
cin>>n >> q >> l;
for (int i=1;i<=n;i++)
{
cin>>ar[i].a;
}
for (int i = 1;i <= n;i++){
cin >> ar[i].b;
}
sort(ar+1,ar+n+1,cmp);
int cnt=0;
for (int i=1;i<=n;i++)
{
if (i==1)
{
q-=(l-ar[i].a);
}
else
{
q-=(ar[i-1].a-ar[i].a);
}
while (q<0)
{
cnt++;
if (!pq.empty()){
q+=pq.top();
pq.pop();
}
else
{
cout<<-1;
return 0;
}
}
pq.push(ar[i].b);
}
q-=ar[n].a;
while (q<0)
{
cnt++;
if (!pq.empty()){
q+=pq.top();
pq.pop();
}
else
{
cout<<-1;
return 0;
}
}
cout<<cnt;
return 0;
}