#include <bits/stdc++.h>
using namespace std;
const int MAXN = 50;
const int INF = 2000000000;
struct Matrix {
  unsigned int a[MAXN][MAXN];
} m1, m2, m3;
Matrix Mul(Matrix A, Matrix B) {
  Matrix C;
  for (int i = 0; i < MAXN; i++)
    for (int j = 0; j < MAXN; j++) C.a[i][j] = INF;
  for (int i = 0; i < MAXN; i++)
    for (int j = 0; j < MAXN; j++)
      for (int k = 0; k < MAXN; k++)
        C.a[i][j] = min(C.a[i][j], A.a[i][k] + B.a[k][j]);
  return C;
}
int n, aa[MAXN], bb[MAXN], m;
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%d", &aa[i]);
  for (int i = 1; i <= n; i++) scanf("%d", &bb[i]);
  for (int i = 0; i < MAXN; i++)
    for (int j = 0; j < MAXN; j++) m1.a[i][j] = (i == j) ? 0 : INF;
  m3 = m1;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < MAXN; j++)
      for (int k = 0; k < MAXN; k++)
        if (j == k + 1)
          m2.a[j][k] = bb[i];
        else if (k == j + 1)
          m2.a[j][k] = aa[i];
        else
          m2.a[j][k] = INF;
    m1 = Mul(m1, m2);
  }
  for (int i = 0;; i++) {
    if ((1 << i) > m) break;
    if (m & (1 << i)) m3 = Mul(m3, m1);
    m1 = Mul(m1, m1);
  }
  printf("%d\n", m3.a[0][0]);
  return 0;
}
