#include <bits/stdc++.h>
int N, M, K, a[25], b[25];
struct matrix {
  int a[50][50];
  matrix(int x = 2e9) {
    memset(a, 127, sizeof(a));
    for (int i = 0; i < K; i++) a[i][i] = x;
  }
  friend matrix operator*(const matrix& A, const matrix& B) {
    matrix C;
    for (int i = 0; i < K; i++)
      for (int j = 0; j < K; j++)
        for (int k = 0; k < K; k++)
          C[i][j] = std::min(0u + C[i][j], 0u + A[i][k] + B[k][j]);
    return C;
  }
  matrix operator^(int B) {
    matrix A = *this, C(0);
    for (; B; B >>= 1, A = A * A)
      if (B & 1) C = C * A;
    return C;
  }
  int* operator[](int x) { return a[x]; }
  const int* operator[](int x) const { return a[x]; }
};
void init() {
  scanf("%d%d", &N, &M), K = 2 * N + 1;
  for (int i = 0; i < N; i++) scanf("%d", &a[i]);
  for (int i = 0; i < N; i++) scanf("%d", &b[i]);
}
void doit() {
  matrix A(0), C;
  C[0][0] = 0;
  for (int i = 0; i < N; i++) {
    matrix B;
    for (int j = 0; j < K; j++) {
      if (j) B[j - 1][j] = a[i];
      if (j < K - 1) B[j + 1][j] = b[i];
    }
    A = A * B;
  }
  printf("%d\n", (C * (A ^ M))[0][0]);
}
int main() {
  init();
  doit();
  return 0;
}
