#include <bits/stdc++.h>
const long long INF = (long long)INT_MAX;
int n, m;
long long a[25], b[25];
struct matrix {
  long long x[45][45];
} I, C, P[30], T;
matrix multiply(matrix A, matrix B) {
  matrix R;
  for (int i = 0; i <= 2 * n; i++)
    for (int j = 0; j <= 2 * n; j++) {
      R.x[i][j] = INF;
      for (int k = 0; k <= 2 * n; k++)
        R.x[i][j] = std::min(R.x[i][j], A.x[i][k] + B.x[k][j]);
    }
  return R;
}
void print(matrix K) {
  for (int i = 0; i <= 2 * n; i++) {
    for (int j = 0; j <= 2 * n; j++) {
      if (K.x[i][j] == INF)
        printf("INF ");
      else
        printf("%3lld ", K.x[i][j]);
    }
    printf("\n");
  }
  printf("\n");
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%lld", a + i);
  for (int i = 0; i < n; i++) scanf("%lld", b + i);
  for (int i = 0; i <= 2 * n; i++)
    for (int j = 0; j <= 2 * n; j++) I.x[i][j] = 0;
  for (int i = 0; i <= 2 * n; i++)
    for (int j = 0; j <= 2 * n; j++) C.x[i][j] = INF;
  for (int p = 0; p < (1 << n); p++) {
    long long cost = 0;
    int btm = 0, top = 0;
    int height = 0;
    for (int i = 0; i < n; i++) {
      if ((p >> i) & 1) {
        cost += a[i];
        height++;
      } else {
        cost += b[i];
        height--;
      }
      btm = std::min(btm, height);
      top = std::max(top, height);
    }
    for (int i = 0; i <= 2 * n; i++)
      if (i + btm >= 0 && i + top <= 2 * n)
        C.x[i][i + height] = std::min(C.x[i][i + height], cost);
  }
  P[0] = C;
  for (int p = 1; p < 25; p++) P[p] = multiply(P[p - 1], P[p - 1]);
  for (int i = 0; i <= 2 * n; i++)
    for (int j = 0; j <= 2 * n; j++) T.x[i][j] = INF;
  for (int i = 0; i <= 2 * n; i++) T.x[i][i] = 0;
  for (int p = 0; p < 25; p++)
    if ((m >> p) & 1) T = multiply(T, P[p]);
  printf("%lld\n", T.x[0][0]);
  return 0;
}
