#include <bits/stdc++.h>
using namespace std;
int a[30], b[30], N;
struct Matrix {
  long long a[55][55];
  Matrix(int x = 2e9) {
    memset(a, 0x3f, sizeof(a));
    for (int i = 0; i < N; i++) a[i][i] = x;
  }
  friend Matrix operator*(const Matrix& A, const Matrix& B) {
    Matrix ans;
    for (int i = 0; i < N; i++)
      for (int j = 0; j < N; j++)
        for (int k = 0; k < N; k++)
          ans[i][j] = min(ans[i][j], A[i][k] + B[k][j]);
    return ans;
  }
  Matrix operator^(int y) {
    Matrix x = *this, ans(0);
    for (; y; y >>= 1) {
      if (y & 1) ans = ans * x;
      x = x * x;
    }
    return ans;
  }
  long long* operator[](int x) { return a[x]; }
  const long long* operator[](int x) const { return a[x]; }
};
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) scanf("%d", &b[i]);
  N = 2 * n + 1;
  Matrix dp, A(0);
  dp[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    Matrix tmp;
    for (int j = 0; j <= N; j++) {
      if (j) tmp[j - 1][j] = a[i];
      if (j < 2 * n) tmp[j + 1][j] = b[i];
    }
    A = A * tmp;
  }
  dp = dp * (A ^ m);
  printf("%lld\n", dp[0][0]);
}
