#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
const int PRIME = 999983;
const int MOD = 10007;
const int MULTI = 1000000007;
const double EPS = 1e-9;
class Matrix {
 public:
  int n, m;
  long long a[32][32];
  Matrix(int n, int m) : n(n), m(m) { memset(a, 0, sizeof(a)); }
  Matrix qpow(int n) {
    Matrix res(this->n, this->m);
    Matrix base = *this;
    memset(res.a, 0x3f, sizeof(res.a));
    for (int i = 0; i < res.n; i++) res.a[i][i] = 0;
    while (n) {
      if (n & 1) res = res.multi(base);
      base = base.multi(base);
      n >>= 1;
    }
    return res;
  }
  Matrix multi(const Matrix &r) {
    Matrix res(n, r.m);
    memset(res.a, 0x3f, sizeof(res.a));
    for (int k = 0; k < n; k++) {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < r.m; j++) {
          res.a[i][j] = min(res.a[i][j], a[i][k] + r.a[k][j]);
        }
      }
    }
    return res;
  }
};
int n, m, a[32], b[32];
int dp[32][32][32];
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);
  memset(dp, 0x3f, sizeof(dp));
  for (int i = 0; i <= n; i++) {
    dp[i][0][i] = 0;
    for (int j = 0; j < n; j++)
      for (int k = 0; k <= n; k++) {
        dp[i][j + 1][k + 1] = min(dp[i][j + 1][k + 1], dp[i][j][k] + a[j]);
        if (k - 1 >= 0)
          dp[i][j + 1][k - 1] = min(dp[i][j + 1][k - 1], dp[i][j][k] + b[j]);
      }
  }
  Matrix ans(n + 1, n + 1);
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++) ans.a[i][j] = dp[i][n][j];
  cout << ans.qpow(m).a[0][0];
  return 0;
}
