#include <bits/stdc++.h>
using namespace std;
int n, m, a[25], b[25], dp[3 * 25][3 * 25][25], A[2 * 25][2 * 25];
int sol[2 * 25][2 * 25], aux[2 * 25][2 * 25];
void multiply(int A[2 * 25][2 * 25], int B[2 * 25][2 * 25],
              int res[2 * 25][2 * 25]) {
  for (int i = 0; i < 2 * n; i++)
    for (int j = 0; j < 2 * n; j++) {
      res[i][j] = 2000000000;
      for (int k = 0; k < 2 * n; k++)
        res[i][j] = (((res[i][j]) < (1LL * A[i][k] + B[k][j]))
                         ? (res[i][j])
                         : (1LL * A[i][k] + B[k][j]));
    }
}
void plog(int A[2 * 25][2 * 25], int pw, int res[2 * 25][2 * 25]) {
  if (pw == 0) {
    for (int i = 0; i < 2 * n; i++) {
      for (int j = 0; j < 2 * n; j++) res[i][j] = 2000000000;
      res[i][i] = 0;
    }
    return;
  }
  plog(A, pw / 2, res);
  multiply(res, res, aux);
  if (pw % 2)
    multiply(aux, A, res);
  else {
    for (int i = 0; i < 2 * n; i++)
      for (int j = 0; j < 2 * n; j++) res[i][j] = aux[i][j];
  }
}
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]);
  for (int i = 0; i < 2 * n; i++) {
    for (int j = 0; j < 2 * n; j++)
      for (int k = 0; k <= n; k++) dp[i][j][k] = 2000000000;
    dp[i][i][0] = 0;
  }
  for (int k = 0; k < n; k++)
    for (int i = 0; i < 2 * n; i++)
      for (int j = 0; j < 2 * n; j++) {
        dp[i][j + 1][k + 1] =
            (((dp[i][j + 1][k + 1]) < (1LL * dp[i][j][k] + a[k]))
                 ? (dp[i][j + 1][k + 1])
                 : (1LL * dp[i][j][k] + a[k]));
        if (j > 0)
          dp[i][j - 1][k + 1] =
              (((dp[i][j - 1][k + 1]) < (1LL * dp[i][j][k] + b[k]))
                   ? (dp[i][j - 1][k + 1])
                   : (1LL * dp[i][j][k] + b[k]));
      }
  for (int i = 0; i < 2 * n; i++)
    for (int j = 0; j < 2 * n; j++) {
      A[i][j] = dp[i][j][n];
    }
  plog(A, m, sol);
  printf("%d\n", sol[0][0]);
  return 0;
}
