#include<bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n,m,k;cin>>n>>m>>k;
vector<int> a(n),b(m);
for(int&i:a)cin>>i;
for(int&i:b)cin>>i;
for(int i:a)if(i<k){
cout<<"Impossible\n";
return 0;
}
vector<int> dp((n+1)*300+1,-1e9);dp[0]=0;
for(int i:b){
for (int j=(n+1)*300-i;j>=0;j--){
dp[j+i]=max(dp[j+i],dp[j]+min(i,n));
}
}
int s=accumulate(begin(a),end(a),0);
int v=s;
while(v<ssize(dp)&&dp[v]<n*k)v++;
if(v==ssize(dp)){
cout<<"Impossible\n";
} else {
cout<<v-s<<'\n';
}
}