#include <bits/stdc++.h>
using namespace std;
using ll = long long;
bool cmp(int i, int j) { return (i > j); }
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int T = 1;
  while (T--) {
    int r, g, b;
    cin >> r >> g >> b;
    int rr[r + 1], gg[g + 1], bb[b + 1];
    for (int i = 0; i < r; i++) {
      cin >> rr[i + 1];
    }
    for (int i = 0; i < g; i++) {
      cin >> gg[i + 1];
    }
    for (int i = 0; i < b; i++) {
      cin >> bb[i + 1];
    }
    sort(rr + 1, rr + r + 1, cmp);
    sort(gg + 1, gg + g + 1, cmp);
    sort(bb + 1, bb + b + 1, cmp);
    int dp[r + 1][g + 1][b + 1];
    memset(dp, 0, sizeof dp);
    int ans = 0;
    for (int i = 0; i <= r; ++i) {
      for (int j = 0; j <= g; ++j) {
        for (int k = 0; k <= b; ++k) {
          if (i && j) {
            dp[i][j][k] = max(dp[i][j][k], dp[i - 1][j - 1][k] + rr[i] * gg[j]);
          }
          if (i && k) {
            dp[i][j][k] = max(dp[i][j][k], dp[i - 1][j][k - 1] + rr[i] * bb[k]);
          }
          if (j && k) {
            dp[i][j][k] = max(dp[i][j][k], dp[i][j - 1][k - 1] + gg[j] * bb[k]);
          }
          ans = max(dp[i][j][k], ans);
        }
      }
    }
    cout << ans;
  }
  return 0;
}
