#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n, m, k, ans;
int main() {
scanf("%d%d%d", &n, &m, &k);
unordered_multiset<ll> used;
vector<ll> a(n), sz(m);
for(int i = 0; i < n; i++)
scanf("%lld", &a[i]);
for(int i = 0; i < m; i++)
scanf("%lld", &sz[i]);
sort(begin(sz), end(sz));
sort(begin(a), end(a));
for(int i = 0; i < n; i++) {
auto x = lower_bound(begin(sz), end(sz), a[i] - k);
if(x != sz.end()) {
if(*x <= a[i] + k && used.find(x - sz.begin()) == used.end()) {
ans++;
used.insert(x - sz.begin());
} else {
for(int idx = x - sz.begin(); idx < n && sz[idx] <= a[i] + k; idx++) {
if(used.find(idx) == used.end()) {
ans++;
used.insert(idx);
break;
}
}
}
}
}
printf("%d\n", ans);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKaW50IG4sIG0sIGssIGFuczsKCmludCBtYWluKCkgewoJc2NhbmYoIiVkJWQlZCIsICZuLCAmbSwgJmspOwoKCXVub3JkZXJlZF9tdWx0aXNldDxsbD4gdXNlZDsKCXZlY3RvcjxsbD4gYShuKSwgc3oobSk7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCXNjYW5mKCIlbGxkIiwgJmFbaV0pOwoKCWZvcihpbnQgaSA9IDA7IGkgPCBtOyBpKyspCgkJc2NhbmYoIiVsbGQiLCAmc3pbaV0pOwoJCglzb3J0KGJlZ2luKHN6KSwgZW5kKHN6KSk7Cglzb3J0KGJlZ2luKGEpLCBlbmQoYSkpOwoJCglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJYXV0byB4ID0gbG93ZXJfYm91bmQoYmVnaW4oc3opLCBlbmQoc3opLCBhW2ldIC0gayk7CgkJaWYoeCAhPSBzei5lbmQoKSkgewoJCQlpZigqeCA8PSBhW2ldICsgayAmJiB1c2VkLmZpbmQoeCAtIHN6LmJlZ2luKCkpID09IHVzZWQuZW5kKCkpIHsKCQkJCWFucysrOwoJCQkJdXNlZC5pbnNlcnQoeCAtIHN6LmJlZ2luKCkpOwoJCQl9IGVsc2UgewoJCQkJZm9yKGludCBpZHggPSB4IC0gc3ouYmVnaW4oKTsgaWR4IDwgbiAmJiBzeltpZHhdIDw9IGFbaV0gKyBrOyBpZHgrKykgewoJCQkJCWlmKHVzZWQuZmluZChpZHgpID09IHVzZWQuZW5kKCkpIHsKCQkJCQkJYW5zKys7CgkJCQkJCXVzZWQuaW5zZXJ0KGlkeCk7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCXByaW50ZigiJWRcbiIsIGFucyk7CglyZXR1cm4gMDsKfQ==