#include <bits/stdc++.h>
using namespace std;
template <typename T>
T Abs(T x) {
  return x > 0 ? x : -x;
}
template <typename T>
T const& Max(T const& a, T const& b) {
  return a > b ? a : b;
}
template <typename T>
T const& Min(T const& a, T const& b) {
  return a < b ? a : b;
}
template <typename T>
inline T gcd(T a, T b) {
  return (b ? gcd(b, a % b) : a);
}
template <typename T>
T sqaa(T a) {
  return a * a;
}
int main() {
  int n;
  double w;
  while (cin >> n >> w) {
    vector<int> K(2 * n);
    vector<int> G(n), B(n);
    for (int i = (0); i < (2 * n); i++) {
      cin >> K[i];
    }
    sort((K).begin(), (K).end());
    for (int i = (0); i < (n); i++) {
      G[i] = K[i];
    }
    int l = 0;
    for (int i = (n); i < (2 * n); i++) {
      B[l++] = K[i];
    }
    double g = G[0];
    double b = B[0] / 2.0;
    double m = (w / double(n)) / 3.0;
    double c = min(g, min(b, m));
    double ans = 3 * n * c;
    cout << setprecision(10) << ans << "\n";
  }
  return 0;
}
