#include <bits/stdc++.h>
using namespace std;
int abss(int a) {
  if (a > 0) return a;
  return -a;
}
int mini(long long a, int b) {
  if (a > b) return b;
  return a;
}
int main() {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  vector<int> a(n), b(n), inf(n), sum(n - 1);
  for (int i = 0; i < n; i++) scanf("%d", &inf[i]);
  for (int i = 0; i < n - 1; i++) sum[i] = inf[i] + inf[i + 1];
  bool swa, swb;
  swa = true;
  swb = true;
  if (n % 2 == 0) {
    printf("0\n");
    return 0;
  }
  if (n == 1) {
    printf("%d\n", mini((long long)m * (long long)k, inf[0]));
    return 0;
  }
  a[1] = min(sum[0], sum[1]);
  a[0] = sum[0] - a[1];
  int x = 0, y = 0;
  for (int i = 2; i < n; i++) {
    a[i] = sum[i - 1] - a[i - 1];
    if (a[i] < 0) x = mini(x, a[i]);
  }
  b[n - 2] = min(sum[n - 2], sum[n - 3]);
  b[n - 1] = sum[n - 2] - b[n - 2];
  for (int i = n - 3; i >= 0; i--) {
    b[i] = sum[i] - b[i + 1];
    if (b[i] < 0) y = mini(y, b[i]);
  }
  int diff = -1;
  diff = max((int)(abss(a[0] - inf[0] - x)), diff);
  diff = max((int)(abss(b[0] - inf[0] - y)), diff);
  printf("%d\n", mini((long long)(m / (n / 2 + 1)) * (long long)k, diff));
  return 0;
}
