#include <bits/stdc++.h>
using namespace std;
long long min(long long a, long long b);
long long money(int t, int litres);
vector<int> b;
int main() {
  int n, l;
  cin >> n >> l;
  for (int i = 0; i < n; i++) {
    long int temp;
    cin >> temp;
    b.push_back(temp);
  }
  cout << money(n, l);
  return 0;
}
long long money(int t, int litres) {
  if (litres == 0) return 0;
  long int top = 0;
  for (int i = 1; i < t; i++) {
    if (b[top] * pow(2, (i - top)) > b[i]) {
      top = i;
    }
  }
  long long maxvalue = pow(2, top);
  long long must = litres / maxvalue;
  if (litres % maxvalue == 0)
    return must * b[top];
  else
    return (must * b[top] + min(b[top], money(top, litres % maxvalue)));
}
long long min(long long a, long long b) {
  if (a > b) return b;
  return a;
}
