#include <bits/stdc++.h>
using namespace std;
vector<int> adia[100010];
bool ok = 1;
bool dfs(int nod) {
  int fii(0);
  if (adia[nod].size() == 0) return true;
  for (auto i : adia[nod]) fii += dfs(i);
  if (fii < 3) ok = 0;
  return false;
}
long long cost[40];
int main() {
  int n, l;
  cin >> n >> l;
  for (int i(0); i < n; i++) cin >> cost[i];
  for (int i(0); i <= 30; i++) {
    if (i + 1 >= n || 2 * cost[i] < cost[i + 1]) cost[i + 1] = 2 * cost[i];
  }
  for (int i(30); i > 0; i--)
    if (cost[i - 1] > cost[i]) cost[i - 1] = cost[i];
  long long ans(0);
  long long pos = (1ll << 60);
  for (int i(30); i >= 0; i--) {
    if (l & (1 << i)) ans += cost[i];
    pos = min(pos, ans + cost[i]);
  }
  cout << min(pos, ans);
  return 0;
}
