#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N, M, K;
cin >> N >> M >> K;
vector<int> T(N);
int maxT = 0;
for(int i = 0; i < N; i++) {
cin >> T[i];
maxT = max(maxT, T[i]);
}
vector<int> D(K);
int Dmax = 0;
for(int i = 0; i < K; i++) {
cin >> D[i];
Dmax = max(Dmax, D[i]);
}
int sum_limit = M * maxT; // 최대 합
vector<bool> dp(sum_limit + 1, false);
dp[0] = true;
// DP: M개 선택 조합
for(int cnt = 0; cnt < M; cnt++) {
vector<bool> next(sum_limit + 1, false);
for(int s = 0; s <= sum_limit; s++) {
if(!dp[s]) continue;
for(int i = 0; i < N; i++) {
if(s + T[i] <= sum_limit) next[s + T[i]] = true;
}
}
dp.swap(next);
}
// D set
unordered_set<int> Dset(D.begin(), D.end());
int ans = 0;
// F1 후보
for(int F1 = 0; F1 + Dmax <= sum_limit; F1++) {
bool ok = true;
// 모든 F1 + D[i] 가능해야 함
for(int i = 0; i < K; i++) {
if(!dp[F1 + D[i]]) { ok = false; break; }
}
if(!ok) continue;
// D에 없는 값은 만들 수 없어야 함
for(int x = 0; x <= Dmax; x++) {
if(Dset.count(x)) continue;
if(F1 + x <= sum_limit && dp[F1 + x]) { ok = false; break; }
}
if(ok) ans++;
}
cout << ans << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CgogICAgaW50IE4sIE0sIEs7CiAgICBjaW4gPj4gTiA+PiBNID4+IEs7CiAgICB2ZWN0b3I8aW50PiBUKE4pOwogICAgaW50IG1heFQgPSAwOwogICAgZm9yKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGNpbiA+PiBUW2ldOwogICAgICAgIG1heFQgPSBtYXgobWF4VCwgVFtpXSk7CiAgICB9CgogICAgdmVjdG9yPGludD4gRChLKTsKICAgIGludCBEbWF4ID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBLOyBpKyspIHsKICAgICAgICBjaW4gPj4gRFtpXTsKICAgICAgICBEbWF4ID0gbWF4KERtYXgsIERbaV0pOwogICAgfQoKICAgIGludCBzdW1fbGltaXQgPSBNICogbWF4VDsgLy8g7LWc64yAIO2VqQogICAgdmVjdG9yPGJvb2w+IGRwKHN1bV9saW1pdCArIDEsIGZhbHNlKTsKICAgIGRwWzBdID0gdHJ1ZTsKCiAgICAvLyBEUDogTeqwnCDshKDtg50g7KGw7ZWpCiAgICBmb3IoaW50IGNudCA9IDA7IGNudCA8IE07IGNudCsrKSB7CiAgICAgICAgdmVjdG9yPGJvb2w+IG5leHQoc3VtX2xpbWl0ICsgMSwgZmFsc2UpOwogICAgICAgIGZvcihpbnQgcyA9IDA7IHMgPD0gc3VtX2xpbWl0OyBzKyspIHsKICAgICAgICAgICAgaWYoIWRwW3NdKSBjb250aW51ZTsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgICAgICAgICAgaWYocyArIFRbaV0gPD0gc3VtX2xpbWl0KSBuZXh0W3MgKyBUW2ldXSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZHAuc3dhcChuZXh0KTsKICAgIH0KCiAgICAvLyBEIHNldAogICAgdW5vcmRlcmVkX3NldDxpbnQ+IERzZXQoRC5iZWdpbigpLCBELmVuZCgpKTsKCiAgICBpbnQgYW5zID0gMDsKICAgIC8vIEYxIO2bhOuztAogICAgZm9yKGludCBGMSA9IDA7IEYxICsgRG1heCA8PSBzdW1fbGltaXQ7IEYxKyspIHsKICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAvLyDrqqjrk6AgRjEgKyBEW2ldIOqwgOuKpe2VtOyVvCDtlagKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgSzsgaSsrKSB7CiAgICAgICAgICAgIGlmKCFkcFtGMSArIERbaV1dKSB7IG9rID0gZmFsc2U7IGJyZWFrOyB9CiAgICAgICAgfQogICAgICAgIGlmKCFvaykgY29udGludWU7CiAgICAgICAgLy8gROyXkCDsl4bripQg6rCS7J2AIOunjOuTpCDsiJgg7JeG7Ja07JW8IO2VqAogICAgICAgIGZvcihpbnQgeCA9IDA7IHggPD0gRG1heDsgeCsrKSB7CiAgICAgICAgICAgIGlmKERzZXQuY291bnQoeCkpIGNvbnRpbnVlOwogICAgICAgICAgICBpZihGMSArIHggPD0gc3VtX2xpbWl0ICYmIGRwW0YxICsgeF0pIHsgb2sgPSBmYWxzZTsgYnJlYWs7IH0KICAgICAgICB9CiAgICAgICAgaWYob2spIGFucysrOwogICAgfQoKICAgIGNvdXQgPDwgYW5zIDw8ICJcbiI7Cn0=