using namespace std;
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define MOD 1000000007
vector<pair<int,bool>> v;
long long dp[1005][2];
bool arr[1005][2];
int main() {
int R,B,L;
cin >> R >> B >> L;
for(int i = 0;i < R + B;++i) {
int cur;
cin >> cur;
if(i < R) {
arr[cur][0] = true;
}else{
arr[cur][1] = true;
}
}
dp[0][0] = 1;
dp[0][1] = 1;
for(int i = 1;i <= 1000;++i) {
if(arr[i][0] && arr[i][1]) {
for(int j = L - i;j >= 0;--j) {
dp[j + i][0] += dp[j][1];
if(dp[j + i][0] >= MOD) dp[j + i][0] -= MOD;
dp[j + i][1] += dp[j][0];
if(dp[j + i][1] >= MOD) dp[j + i][1] -= MOD;
if(j + 2 * i <= L) {
dp[j + 2 * i][0] += dp[j][0];
if(dp[j + 2 * i][0] >= MOD) dp[j + 2 * i][0] -= MOD;
dp[j + 2 * i][1] += dp[j][1];
if(dp[j + 2 * i][1] >= MOD) dp[j + 2 * i][1] -= MOD;
}
}
}else if(arr[i][0] && !(arr[i][1])) {
for(int j = L - i;j >= 0;--j) {
dp[j + i][0] += dp[j][1];
if(dp[j + i][0] >= MOD) dp[j + i][0] -= MOD;
}
}else if(!(arr[i][0]) && arr[i][1]) {
for(int j = L - i;j >= 0;--j) {
dp[j + i][1] += dp[j][0];
if(dp[j + i][1] >= MOD) dp[j + i][1] -= MOD;
}
}
}
cout << (dp[L][0] + dp[L][1]) % MOD << endl;
}