#include <bits/stdc++.h>
using namespace std;
typedef struct matrix_st {
  vector<vector<int> > m;
  int R, C;
  matrix_st() {}
  matrix_st(int r, int c) {
    R = r;
    C = c;
    m.resize(R);
    for (int i = 0; i < R; i++) {
      m[i].resize(C);
    }
  }
  void print() {
    for (int i = 0; i < R; i++) {
      for (int j = 0; j < C; j++) printf("%d ", m[i][j]);
      printf("\n");
    }
  }
} Matrix, *MatrixPtr;
MatrixPtr T;
int N, M;
int A[25], B[25];
MatrixPtr cal(MatrixPtr a, MatrixPtr b) {
  MatrixPtr ret = new Matrix(a->R, b->C);
  for (int i = 0; i < ret->R; i++) {
    for (int j = 0; j < ret->C; j++) {
      ret->m[i][j] = 2100000000;
    }
  }
  for (int i = 0; i < a->R; i++) {
    for (int j = 0; j < b->C; j++) {
      for (int k = 0; k < b->R; k++) {
        ret->m[i][j] =
            min((long long)ret->m[i][j], (long long)a->m[i][k] + b->m[k][j]);
      }
    }
  }
  return ret;
}
MatrixPtr power(int exp) {
  MatrixPtr ret;
  if (exp == 0) {
    ret = new Matrix(2 * N + 1, 2 * N + 1);
    for (int i = 0; i < ret->R; i++)
      for (int j = 0; j < ret->C; j++) ret->m[i][j] = 2100000000;
    for (int i = 0; i < ret->R; i++) ret->m[i][i] = 0;
  } else if (exp % 2) {
    ret = power(exp - 1);
    ret = cal(ret, T);
  } else {
    ret = power(exp / 2);
    ret = cal(ret, ret);
  }
  return ret;
}
int main() {
  scanf("%d %d", &N, &M);
  for (int i = 0; i < N; i++) scanf("%d", &A[i]);
  for (int i = 0; i < N; i++) scanf("%d", &B[i]);
  T = new Matrix(2 * N + 1, 2 * N + 1);
  for (int i = 0; i < T->R; i++) {
    for (int j = 0; j < T->C; j++) {
      T->m[i][j] = 2100000000;
    }
  }
  for (int i = 0; i < T->R; i++) T->m[i][i] = 0;
  for (int i = 0; i < N; i++) {
    MatrixPtr temp = new Matrix(T->R, T->C);
    for (int j = 0; j < temp->R; j++) {
      for (int k = 0; k < temp->C; k++) {
        temp->m[j][k] = 2100000000;
      }
    }
    for (int j = 0; j <= 2 * N; j++) {
      for (int k = 0; k <= 2 * N; k++) {
        if (k) temp->m[j][k - 1] = min(temp->m[j][k - 1], T->m[j][k] + B[i]);
        if (k != 2 * N)
          temp->m[j][k + 1] = min(temp->m[j][k + 1], T->m[j][k] + A[i]);
      }
    }
    T = temp;
  }
  MatrixPtr res = power(M);
  printf("%d\n", res->m[0][0]);
  return 0;
}
