#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct E{
int a,b;
bool operator<(const E& e1)const{
if(a!=e1.a)return a<e1.a;
return b<e1.b;
}
};
vector<E> vs;
int f(int n1,int m1,int k1,int sum1){
if(n1==0 || m1==0 || k1==0){
return sum1+m1;
}
int res1=0;
int res2=0;
if(n1>0 && k1>0){
int d1=min(vs[n1].b,m1);
res1=f(n1-1,m1-d1,k1-1,sum1+d1*vs[n1].a);
}
res2=f(n1-1,m1,k1,sum1);
return max(res1,res2);
}
int main() {
int n,m,k;
cin>>n>>m>>k;
vector<int> vsa;
for(int i=0;i<n;i++){
int x;
cin>>x;
vsa.push_back(x);
}
E e;
vs.push_back(e);
for(int i=0;i<n;i++){
E e1;
e1.a=vsa[i];
cin>>e1.b;
vs.push_back(e1);
}
sort(vs.begin(),vs.end());
cout<<f(n,m,k,0)<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IEV7CglpbnQgYSxiOwoJYm9vbCBvcGVyYXRvcjwoY29uc3QgRSYgZTEpY29uc3R7CgkJaWYoYSE9ZTEuYSlyZXR1cm4gYTxlMS5hOwoJCXJldHVybiBiPGUxLmI7Cgl9Cn07CnZlY3RvcjxFPiB2czsKCmludCBmKGludCBuMSxpbnQgbTEsaW50IGsxLGludCBzdW0xKXsKCWlmKG4xPT0wIHx8IG0xPT0wIHx8IGsxPT0wKXsKCQlyZXR1cm4gc3VtMSttMTsKCX0KCWludCByZXMxPTA7CglpbnQgcmVzMj0wOwoJaWYobjE+MCAmJiBrMT4wKXsKCQlpbnQgZDE9bWluKHZzW24xXS5iLG0xKTsKCQlyZXMxPWYobjEtMSxtMS1kMSxrMS0xLHN1bTErZDEqdnNbbjFdLmEpOwoJfQoJcmVzMj1mKG4xLTEsbTEsazEsc3VtMSk7CglyZXR1cm4gbWF4KHJlczEscmVzMik7Cn0KCmludCBtYWluKCkgewoJaW50IG4sbSxrOwoJY2luPj5uPj5tPj5rOwoJdmVjdG9yPGludD4gdnNhOwoJCglmb3IoaW50IGk9MDtpPG47aSsrKXsKCQlpbnQgeDsKCQljaW4+Png7CgkJdnNhLnB1c2hfYmFjayh4KTsKCX0KCUUgZTsKCXZzLnB1c2hfYmFjayhlKTsKCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCUUgZTE7CgkJZTEuYT12c2FbaV07CgkJY2luPj5lMS5iOwoJCXZzLnB1c2hfYmFjayhlMSk7Cgl9Cglzb3J0KHZzLmJlZ2luKCksdnMuZW5kKCkpOwoJY291dDw8ZihuLG0saywwKTw8ZW5kbDsKCXJldHVybiAwOwp9