#include <bits/stdc++.h>
using namespace std;
long long modexp(long long n, long long m) {
  if (m == 0)
    return 1;
  else if (m == 1)
    return n;
  else {
    long long p = modexp(n, m / 2);
    if (m % 2 == 1)
      return (((p * p) % 1000000007) * n) % 1000000007;
    else
      return (p * p) % 1000000007;
  }
}
long long exp(long long n, long long m) {
  if (m == 0) return 1;
  if (m == 1) return n;
  long long p = exp(n, m / 2);
  if (m % 2 == 1)
    return p * p * n;
  else
    return p * p;
}
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long inv(long long n) { return modexp(n, 1000000007 - 2); }
long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
long long factorial(long long fact[], long long n) {
  fact[0] = 1;
  fact[1] = 1;
  long long prod = 1, i;
  for (i = 2; i < n + 1; i++) {
    prod = (prod * i) % 1000000007;
    fact[i] = prod;
  }
  return prod;
}
bool comparator(pair<long long, long long> p1, pair<long long, long long> p2) {
  return p1.second > p2.second;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n, i, j, k, m, t;
  long long R, G, B;
  cin >> R >> G >> B;
  vector<long long> r(R), g(G), b(B);
  for (i = 0; i < R; i++) cin >> r[i];
  for (i = 0; i < G; i++) cin >> g[i];
  for (i = 0; i < B; i++) cin >> b[i];
  sort(r.begin(), r.end());
  sort(b.begin(), b.end());
  sort(g.begin(), g.end());
  long long dp[R + 1][G + 1][B + 1];
  for (i = 0; i < R + 1; i++)
    for (j = 0; j < G + 1; j++)
      for (k = 0; k < B + 1; k++) dp[i][j][k] = 0;
  for (i = 0; i < R + 1; i++) {
    for (j = 0; j < G + 1; j++) {
      for (k = 0; k < B + 1; k++) {
        if (i > 0 && j > 0)
          dp[i][j][k] =
              max(dp[i][j][k], dp[i - 1][j - 1][k] + r[i - 1] * g[j - 1]);
        if (j > 0 && k > 0)
          dp[i][j][k] =
              max(dp[i][j][k], dp[i][j - 1][k - 1] + g[j - 1] * b[k - 1]);
        if (i > 0 && k > 0)
          dp[i][j][k] =
              max(dp[i][j][k], dp[i - 1][j][k - 1] + r[i - 1] * b[k - 1]);
      }
    }
  }
  cout << dp[R][G][B] << endl;
  return 0;
}
