#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int n, m, k;
  scanf("%lld %lld %lld", &n, &m, &k);
  long long int arr[n + 1], i;
  for (i = 1; i <= n; i++) {
    scanf("%lld", &arr[i]);
  }
  long long int max1 = arr[1], max2 = -1, pos1 = 1, pos2 = 1;
  for (i = 2; i <= n; i++) {
    if (max1 < arr[i]) {
      if (max2 < max1) {
        max2 = max1;
        pos2 = pos1;
      }
      max1 = arr[i];
      pos1 = i;
    } else if (max2 <= arr[i]) {
      max2 = arr[i];
      pos2 = i;
    }
  }
  long long int fixedValue = max1 * k + max2;
  long long int ans = 0;
  if (m % (k + 1) == 0) {
    ans = (m / (k + 1)) * fixedValue;
  } else {
    ans = max1 * (m - m / (k + 1)) + max2 * (m / (k + 1));
  }
  printf("%lld\n", ans);
  return 0;
}
