#include <bits/stdc++.h>
using namespace std;
long long maxl(long long a, long long b) { return ((a < b) ? b : a); }
long long minl(long long a, long long b) { return ((a > b) ? b : a); }
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int R, G, B;
  cin >> R >> G >> B;
  int r[R], b[B], g[G];
  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, greater<int>());
  sort(g, g + G, greater<int>());
  sort(b, b + B, greater<int>());
  int ans = 0;
  int dp[R + 1][G + 1][B + 1];
  for (int i = 0; i < R + 1; i++) {
    for (int j = 0; j < G + 1; j++) {
      for (int k = 0; k < B + 1; k++) {
        dp[i][j][k] = 0;
        if ((i == 0 && j == 0) || (j == 0 && k == 0) || (k == 0 && i == 0))
          continue;
        if (i > 0 && j > 0)
          dp[i][j][k] =
              max(dp[i][j][k], dp[i - 1][j - 1][k] + r[i - 1] * g[j - 1]);
        if (j > 0 && k > 0)
          dp[i][j][k] =
              max(dp[i][j][k], dp[i][j - 1][k - 1] + g[j - 1] * b[k - 1]);
        if (i > 0 && k > 0)
          dp[i][j][k] =
              max(dp[i][j][k], dp[i - 1][j][k - 1] + r[i - 1] * b[k - 1]);
        ans = max(ans, dp[i][j][k]);
      }
    }
  }
  cout << ans << "\n";
}
