#include <bits/stdc++.h>
long long dp[201][201][201];
int r[201], g[201], b[201];
int R, G, B;
long long DP(int p, int q, int c) {
  if (dp[p][q][c] != -1) {
    return dp[p][q][c];
  }
  int ze = 0;
  if (p == 0) ze++;
  if (q == 0) ze++;
  if (c == 0) ze++;
  if (ze >= 2) {
    return dp[p][q][c] = 0;
  }
  long long ans = 0;
  if (p > 0 && q > 0) {
    ans = std::max(ans, DP(p - 1, q - 1, c) + r[p] * g[q]);
  }
  if (p > 0 && c > 0) {
    ans = std::max(ans, DP(p - 1, q, c - 1) + r[p] * b[c]);
  }
  if (q > 0 && c > 0) {
    ans = std::max(ans, DP(p, q - 1, c - 1) + g[q] * b[c]);
  }
  return dp[p][q][c] = ans;
}
int main() {
  scanf("%d%d%d", &R, &G, &B);
  for (int k = 0; k <= R; k++) {
    for (int i = 0; i <= G; i++) {
      for (int j = 0; j <= B; j++) {
        dp[k][i][j] = -1;
      }
    }
  }
  for (int k = 1; k <= R; k++) {
    scanf("%d", &r[k]);
  }
  for (int k = 1; k <= G; k++) {
    scanf("%d", &g[k]);
  }
  for (int k = 1; k <= B; k++) {
    scanf("%d", &b[k]);
  }
  std::sort(r + 1, r + R + 1);
  std::sort(g + 1, g + G + 1);
  std::sort(b + 1, b + B + 1);
  printf("%lld", DP(R, G, B));
}
