#include <cstdio>
#include <algorithm>
using namespace std;
long long a[256], best[256], best2[256];
long long INF = 1LL << 62;
int main()
{
int n;
long long m;
scanf("%d%lld", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%lld", a + i);
best[i] = -INF;
best2[i] = -INF;
}
best[0] = 0;
for (int i = 1; i < n; i++)
{
int b = __builtin_popcount(i);
best2[0] = max(b * a[0], best[0]);
for (int j = 1; j <= i; j++)
{
best2[j] = max(best[j], b * a[j] + best[j - 1]);
}
for (int j = 0; j <= i; j++) best[j] = best2[j];
}
for (int i = n; i <= m; i++)
{
int b = __builtin_popcount(i);
best2[0] = max(b * a[0], best[0]);
for (int j = 1; j < n; j++)
{
best2[j] = b * a[j] + best[j - 1];
}
for (int j = 0; j < n; j++)
{
best[j] = max(best2[j], best[j]);
}
}
printf("%lld\n", best[n - 1]);
return 0;
}