#include <bits/stdc++.h>
using namespace std;
int a[222], b[222], n, m;
long long f[2222][2222];
int powmod(int a, int b) {
  int tmp = 1;
  a %= 1000000009;
  for (; b; b >>= 1) {
    if (b & 1) tmp = (long long)tmp * a % 1000000009;
    a = (long long)a * a % 1000000009;
  }
  return tmp;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
inline void R(int &xx) {
  xx = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9')
    xx = xx + xx + (xx << 3) + ch - 48, ch = getchar();
}
inline void R(long long &xx) {
  xx = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') ch = getchar();
  while (ch >= '0' && ch <= '9')
    xx = xx + xx + (xx << 3) + ch - 48, ch = getchar();
}
int main() {
  R(n);
  R(m);
  for (int i = 0; i < n; i++) R(a[i]);
  for (int i = 0; i < n; i++) R(b[i]);
  int lim = min(m, 100) * n;
  for (int i = 0; i < lim + 10; i++)
    for (int j = 0; j < lim + 10; j++) f[i][j] = (1 << 30);
  f[0][0] = 0;
  for (int i = 0; i < lim; i++)
    for (int j = 0; j <= i; j++) {
      f[i + 1][j + 1] = min(f[i + 1][j + 1], f[i][j] + a[i % n]);
      if (j) f[i + 1][j - 1] = min(f[i + 1][j - 1], f[i][j] + b[i % n]);
    }
  long long tmp = f[lim][0];
  printf("%I64d\n", tmp + (m - min(100, m)) / 2LL * (tmp - f[lim - 2 * n][0]));
  return 0;
}
