#include <bits/stdc++.h>
using namespace std;
int n, m;
struct mat {
  long long c[22][22];
  void init(long long t) {
    for (int i = 0; i <= n; ++i)
      for (int j = 0; j <= n; ++j) c[i][j] = t;
  }
  void print() {
    for (int i = 0; i <= n; ++i, puts(""))
      for (int j = 0; j <= n; ++j)
        if (c[i][j] < 3000000000LL)
          printf("%I64d  ", c[i][j]);
        else
          printf("oo ");
    puts("");
  }
} tmp, I, A, X, Y;
mat operator*(mat a, mat b) {
  tmp.init(3000000000LL);
  for (int i = 0; i <= n; ++i)
    for (int j = 0; j <= n; ++j)
      for (int k = 0; k <= n; ++k)
        tmp.c[i][j] = min(tmp.c[i][j], a.c[i][k] + b.c[k][j]);
  return tmp;
}
int a[22], b[22];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
  for (int i = 1; i <= n; ++i) scanf("%d", &b[i]);
  mat I;
  I.init(3000000000LL);
  for (int i = 0; i <= n; ++i) I.c[i][i] = 0;
  A = I;
  X = I;
  for (int k = 1; k <= n; ++k) {
    Y = I;
    for (int i = 0; i <= n; ++i)
      for (int j = 0; j <= n; ++j) {
        if (i + 1 == j) Y.c[j][i] = a[k];
        if (j + 1 == i) Y.c[j][i] = b[k];
        if (abs(i - j) != 1) Y.c[j][i] = 3000000000LL;
      }
    X = Y * X;
  }
  for (int i = 1; i <= m; i += i) {
    if (m & i) A = A * X;
    X = X * X;
  }
  cout << A.c[0][0] << endl;
}
