#include <iostream>
using namespace std;
long long *jak,wynik=0,buf=0;
unsigned long long *wbit;
int n;
unsigned long long m;
bool przes;
long long C(unsigned long long a)
{
long long r=0;
unsigned long long k=1;
for(int i=0; i<64; i++){
if(a & k)r++;
k = k<<1;
}
return r;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n;
cin>>m;
jak = new long long [n];
wbit = new unsigned long long [n];
for(int i=0; i<n; i++)
{
cin>>jak[i];
wbit[i] = i;
}
for(int i=0; i<n; i++) wynik += jak[i] * C(wbit[i]);
while(wbit[0]<m)
{
buf = 0;
for(int i=0; i<n; i++) buf+=jak[i]*C(wbit[i]);
if(buf > wynik) wynik = buf;
przes = true;
wbit[n-1]++;
while(przes)
{
przes = false;
for(int i=1; i<n; i++)
if(wbit[i]>m)
{
wbit[i-1]++;
wbit[i]=wbit[i-1]+1;
przes=true;
}
if(wbit[0]>m) przes = false;
}
}
int k=0;
buf = 0;
for(int i=n; i>0; i--) {wbit[i-1] = m - k; k++;}
for(int i=0; i<n; i++) buf += jak[i] * C(wbit[i]);
if(buf > wynik) wynik = buf;
cout<<wynik;
return 0;
}