#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int R, G, B, r[201], g[201], b[201];
int dp[201][201][201];
long long f(int i, int j, int k) {
  if (dp[i][j][k] > -1) {
    return dp[i][j][k];
  }
  bool a = i >= R;
  bool bb = j >= G;
  bool c = k >= B;
  if (a + bb + c >= 2) {
    dp[i][j][k] = 0;
    return 0;
  }
  long long ans = 0;
  if (i < R && j < G) {
    ans = max(ans, (ll)r[i] * (ll)g[j] + f(i + 1, j + 1, k));
  }
  if (i < R && k < B) {
    ans = max(ans, (ll)r[i] * (ll)b[k] + f(i + 1, j, k + 1));
  }
  if (j < G && k < B) {
    ans = max(ans, (ll)g[j] * (ll)b[k] + f(i, j + 1, k + 1));
  }
  if (i + 1 < R) {
    ans = max(ans, f(i + 1, j, k));
  }
  if (j + 1 < G) {
    ans = max(ans, f(i, j + 1, k));
  }
  if (k + 1 < B) {
    ans = max(ans, f(i, j, k + 1));
  }
  if (i + 1 < R && j + 1 < G) {
    ans = max(ans, f(i + 1, j + 1, k));
  }
  if (j + 1 < G && k + 1 < B) {
    ans = max(ans, f(i, j + 1, k + 1));
  }
  if (i + 1 < R && k + 1 < B) {
    ans = max(ans, f(i + 1, j, k + 1));
  }
  if (i + 1 < R && j + 1 < G && k + 1 < B) {
    ans = max(ans, f(i + 1, j + 1, k + 1));
  }
  dp[i][j][k] = ans;
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  for (int i = 0; i < 201; i++) {
    for (int j = 0; j < 201; j++) {
      for (int k = 0; k < 201; k++) {
        dp[i][j][k] = -1;
      }
    }
  }
  cin >> R >> G >> B;
  for (int i = 0; i < R; i++) {
    cin >> r[i];
  }
  for (int i = 0; i < G; i++) {
    cin >> g[i];
  }
  for (int i = 0; i < B; i++) {
    cin >> b[i];
  }
  sort(r, r + R);
  sort(g, g + G);
  sort(b, b + B);
  cout << f(0, 0, 0) << '\n';
  return 0;
}
