#include <bits/stdc++.h>
using namespace std;
int a[22];
int b[22];
long long cost[30][22][22][22];
int main(void) {
  int n = 0;
  int m = 0;
  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]);
  memset(cost, 0x3F, sizeof(cost));
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= n; j++) {
      if (j) cost[0][i][j][j - 1] = b[i];
      if (j != n) cost[0][i][j][j + 1] = a[i];
    }
  }
  for (int i = 1; i < 30; i++) {
    for (int j = 0; j < n; j++) {
      int to = (j + (1 << (i - 1))) % n;
      for (int mid = 0; mid <= n; mid++) {
        for (int x = 0; x <= n; x++) {
          for (int y = 0; y <= n; y++) {
            cost[i][j][x][y] =
                min(cost[i][j][x][y],
                    cost[i - 1][j][x][mid] + cost[i - 1][to][mid][y]);
          }
        }
      }
    }
  }
  long long ac3[22][22];
  memset(ac3, 0x3F, sizeof(ac3));
  for (int i = 0; i <= n; i++) ac3[i][i] = 0;
  int curj = 0;
  m *= n;
  for (int i = 0; i < 30; i++) {
    if (m & (1 << i)) {
      long long nac3[22][22];
      memset(nac3, 0x3F, sizeof(nac3));
      for (int mid = 0; mid <= n; mid++) {
        for (int x = 0; x <= n; x++) {
          for (int y = 0; y <= n; y++) {
            nac3[x][y] = min(nac3[x][y], ac3[x][mid] + cost[i][curj][mid][y]);
          }
        }
      }
      curj = (curj + (1 << i)) % n;
      memcpy(ac3, nac3, sizeof(ac3));
    }
  }
  printf("%I64d\n", ac3[0][0]);
  while (getchar() != EOF)
    ;
  return 0;
}
