#include <bits/stdc++.h>
using namespace std;
template <typename T>
struct SegmentTree {
  using F = function<T(T, T)>;
  long long n;
  F f;
  T ti;
  vector<T> dat;
  SegmentTree(){};
  SegmentTree(F f, T ti) : f(f), ti(ti) {}
  void init(long long n_) {
    n = 1;
    while (n < n_) n <<= 1;
    dat.assign(n << 1, ti);
  }
  void build(const vector<T> &v) {
    long long n_ = v.size();
    init(n_);
    for (long long i = 0; i < n_; i++) dat[n + i] = v[i];
    for (long long i = n - 1; i; i--)
      dat[i] = f(dat[(i << 1) | 0], dat[(i << 1) | 1]);
  }
  void update(long long k, T x) {
    dat[k += n] = x;
    while (k >>= 1) dat[k] = f(dat[(k << 1) | 0], dat[(k << 1) | 1]);
  }
  void add(long long k, T x) {
    dat[k += n] += x;
    while (k >>= 1) dat[k] = f(dat[(k << 1) | 0], dat[(k << 1) | 1]);
  }
  T query(long long a, long long b) {
    T vl = ti, vr = ti;
    for (long long l = a + n, r = b + n; l < r; l >>= 1, r >>= 1) {
      if (l & 1) vl = f(vl, dat[l++]);
      if (r & 1) vr = f(dat[--r], vr);
    }
    return f(vl, vr);
  }
  template <typename C>
  long long lower_find(long long a, long long b, C &check, T x, long long k = 1,
                       long long l = 0, long long r = -1) {
    if (r < 0) r = n;
    if (!check(f(x, dat[k])) || r <= a || b <= l) return -1;
    if (r - l == 1) return l;
    long long xl = lower_find(a, b, check, x, (k << 1), l, (l + r) / 2);
    if (xl >= 0) return xl;
    x = f(x, dat[(k << 1)]);
    return lower_find(a, b, check, x, (k << 1) | 1, (l + r) / 2, r);
  }
  template <typename C>
  long long lower_find(long long a, long long b, C &check) {
    T x = ti;
    return lower_find(a, b, check, x);
  }
  template <typename C>
  long long upper_find(long long a, long long b, C &check, T x, long long k = 2,
                       long long l = 0, long long r = -1) {
    if (r < 0) r = n;
    if (r <= a || b <= l) return -1;
    if (r - l == 1) return l;
    if (check(f(x, dat[k]))) {
      long long xr =
          upper_find(a, b, check, f(x, dat[k]), ((k + 1) << 1), (l + r) / 2, r);
      if (xr >= 0) return xr;
    }
    return upper_find(a, b, check, x, (k << 1), l, (l + r) / 2);
  }
  template <typename C>
  long long upper_find(long long a, long long b, C &check) {
    T x = ti;
    return upper_find(a, b, check, x);
  }
};
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long x, y, z;
  cin >> x >> y >> z;
  vector<long long> a(x);
  for (long long i = (0); i < ((x)); ++i) cin >> a[i];
  vector<long long> b(y);
  for (long long i = (0); i < ((y)); ++i) cin >> b[i];
  vector<long long> c(z);
  for (long long i = (0); i < ((z)); ++i) cin >> c[i];
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
  sort(c.begin(), c.end());
  long long n = x + y + z;
  vector<long long> sum1(n + 5, 0), sum3(n + 5, 0);
  vector<long long> d(n + 1, 0);
  for (long long i = (0); i < ((x)); ++i) sum1[a[i]]++, d[a[i]]++;
  for (long long i = (0); i < ((n)); ++i) sum1[i + 1] += sum1[i];
  for (long long i = (0); i < ((z)); ++i) sum3[c[i]]++;
  for (long long i = ((n)-1); i >= (0); --i) sum3[i] += sum3[i + 1];
  vector<long long> sum2(n + 5, 0);
  for (long long i = (0); i < ((y)); ++i) sum2[b[i]]++;
  auto f = [](long long a, long long b) { return a + b; };
  SegmentTree<long long> seg(f, 0);
  seg.build(sum2);
  auto g = [](pair<long long, long long> a, pair<long long, long long> b) {
    return max(a, b);
  };
  SegmentTree<pair<long long, long long> > seg2(
      g, pair<long long, long long>(0, n + 1));
  vector<pair<long long, long long> > tmp(n + 5,
                                          pair<long long, long long>(0, n + 1));
  long long cnt = 0;
  for (long long i = ((n + 1) - 1); i >= (0); --i) {
    if (d[i]) cnt++;
    tmp[i] = pair<long long, long long>(sum3[i] * 2 - (n + 1 - i) + cnt, i);
  }
  seg2.build(tmp);
  long long ans = n - max({x, y, z});
  for (long long i = (0); i < ((n + 1)); ++i) {
    long long now = x - sum1[i] + seg.query(0, i + 1);
    pair<long long, long long> p = seg2.query(i + 1, n + 1);
    long long id = p.second;
    now += z - sum3[id] + seg.query(id, n + 1);
    ans = min(ans, now);
  }
  cout << ans << endl;
  return 0;
}
