#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
int a1[maxn], a2[maxn], a3[maxn];
int k1, k2, k3;
int n, m, k, l, s, t, r;
int need_get[maxn];
int query_1_have(int x) {
  if (x == 0) return 0;
  int L = 1, R = k1, pos = 0;
  while (L <= R) {
    int mid = (L + R) / 2;
    if (a1[mid] <= x)
      pos = mid, L = mid + 1;
    else
      R = mid - 1;
  }
  return pos;
}
int query_2_have_sa(int x) {
  int L = 1, R = k2, pos = k2 + 1;
  while (L <= R) {
    int mid = (L + R) / 2;
    if (a2[mid] >= x)
      pos = mid, R = mid - 1;
    else
      L = mid + 1;
  }
  return pos;
}
int query_3(int x) {
  int L = 1, R = k3, pos = 0;
  while (L <= R) {
    int mid = (L + R) / 2;
    if (a3[mid] <= x)
      pos = mid, L = mid + 1;
    else
      R = mid - 1;
  }
  return pos;
}
int main() {
  cin >> k1 >> k2 >> k3;
  n = k1 + k2 + k3;
  for (int i = 1; i <= k1; i++) cin >> a1[i];
  for (int i = 1; i <= k2; i++) cin >> a2[i];
  for (int i = 1; i <= k3; i++) cin >> a3[i];
  sort(a1 + 1, a1 + 1 + k1);
  sort(a2 + 1, a2 + 1 + k2);
  sort(a3 + 1, a3 + 1 + k3);
  int ans = k1 + k3;
  for (int i = 1; i <= k3; i++) {
    need_get[i] = k2 - query_2_have_sa(a3[i]) + 1;
  }
  for (int i = 1; i <= k3; i++) need_get[i] += i - 1;
  for (int i = k3 - 1; i >= 1; i--)
    need_get[i] = min(need_get[i], need_get[i + 1]);
  need_get[k3 + 1] = k3;
  for (int i = 0; i <= n; i++) {
    int num1 = query_1_have(i);
    int tot = 0;
    tot += i - num1;
    tot += k1 - num1;
    int pos = query_3(i);
    tot += need_get[pos + 1] - pos;
    ans = min(ans, tot);
  }
  cout << ans << endl;
  return 0;
}
