#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
const long long INF = 0x3f3f3f3f3f3f3f3f;
const long long llinf = (1LL << 60);
const int inf = (1 << 30);
const int nmax = 2e2 + 50;
const long long mod = 1e9 + 7;
using namespace std;
int i, j, t, n[4];
long long a[4][nmax], f[nmax][nmax][nmax], rs;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cerr.tie(0);
  cout.tie(0);
  for (i = 1; i <= 3; i++) cin >> n[i];
  for (i = 1; i <= 3; i++) {
    for (j = 1; j <= n[i]; j++) cin >> a[i][j];
    sort(a[i] + 1, a[i] + n[i] + 1);
    reverse(a[i] + 1, a[i] + n[i] + 1);
  }
  for (i = 0; i <= n[1]; i++) {
    for (j = 0; j <= n[2]; j++) {
      for (t = 0; t <= n[3]; t++) {
        if ((i + j + t) & 1) continue;
        if (i && j)
          f[i][j][t] = max(f[i][j][t], f[i - 1][j - 1][t] + a[1][i] * a[2][j]);
        if (i && t)
          f[i][j][t] = max(f[i][j][t], f[i - 1][j][t - 1] + a[1][i] * a[3][t]);
        if (j && t)
          f[i][j][t] = max(f[i][j][t], f[i][j - 1][t - 1] + a[2][j] * a[3][t]);
        rs = max(rs, f[i][j][t]);
      }
    }
  }
  cout << rs << '\n';
  return 0;
}
