#include <bits/stdc++.h>
using namespace std;
long long r, g, b;
long long R[256], G[256], B[256];
long long PD[202][202][202];
bool cmp(int a, int b) { return a > b; }
long long calc(long long i, long long j, long long k) {
  if (i == r and j == g and k == b) return 0;
  if (PD[i][j][k] != -1) return PD[i][j][k];
  long long opc1 = (i < r ? calc(i + 1, j, k) : 0);
  long long opc2 = (j < g ? calc(i, j + 1, k) : 0);
  long long opc3 = (k < b ? calc(i, j, k + 1) : 0);
  long long opc4 = (i < r and j < g ? R[i] * G[j] + calc(i + 1, j + 1, k) : 0);
  long long opc5 = (i < r and k < b ? R[i] * B[k] + calc(i + 1, j, k + 1) : 0);
  long long opc6 = (j < g and k < b ? G[j] * B[k] + calc(i, j + 1, k + 1) : 0);
  return PD[i][j][k] =
             max(max(opc1, opc2), max(max(opc3, opc4), max(opc5, opc6)));
}
int main() {
  scanf("%lld %lld %lld", &r, &g, &b);
  for (int i = 0; i < r; i++) scanf("%lld", R + i);
  for (int i = 0; i < g; i++) scanf("%lld", G + i);
  for (int i = 0; i < b; i++) scanf("%lld", B + i);
  sort(R, R + r, cmp);
  sort(G, G + g, cmp);
  sort(B, B + b, cmp);
  memset(PD, 0xff, sizeof(PD));
  printf("%lld\n", calc(0, 0, 0));
  return 0;
}
