#include <bits/stdc++.h>
using namespace std;
template <typename T>
void __read(T &a) {
  cin >> a;
}
template <typename T, typename... Args>
void __read(T &a, Args &...args) {
  cin >> a;
  __read(args...);
}
constexpr long long M7 = 1000000007ll;
constexpr long long M9 = 1000000009ll;
constexpr long long MFFT = 998244353ll;
template <class T>
void outv(T &a) {
  for (auto &x : a) cout << x << ' ';
}
static mt19937 rnd(static_cast<unsigned>(
    chrono::steady_clock::now().time_since_epoch().count()));
auto __fast_io__ = (ios_base::sync_with_stdio(false), cin.tie(nullptr));
int32_t main() {
  long long n, m;
  __read(n, m);
  vector<long long> a(n);
  for (signed i = 0; i < (n); i++) cin >> a[i];
  vector<long long> b(n);
  for (signed i = 0; i < (n); i++) cin >> b[i];
  const long long B = 50;
  const long long INF = M7 * M7;
  auto mul = [&](const vector<vector<long long>> &a,
                 const vector<vector<long long>> &b) {
    vector<vector<long long>> c(B, vector<long long>(B, INF));
    for (long long i = 0; i < B; ++i) {
      for (long long j = 0; j < B; ++j) {
        for (long long k = 0; k < B; ++k) {
          c[i][j] = min(c[i][j], a[i][k] + b[k][j]);
        }
      }
    }
    return c;
  };
  vector<vector<long long>> s(B, vector<long long>(B, INF));
  for (long long i = 0; i < B; ++i) {
    s[i][i] = 0;
  }
  for (long long i = 0; i < n; ++i) {
    vector<vector<long long>> c(B, vector<long long>(B, INF));
    for (long long j = 0; j + 1 < B; ++j) {
      c[j][j + 1] = a[i];
      c[j + 1][j] = b[i];
    }
    s = mul(s, c);
  }
  vector<vector<long long>> res(B, vector<long long>(B, INF));
  for (long long i = 0; i < B; ++i) {
    res[i][i] = 0;
  }
  while (m > 0) {
    if (m % 2 == 1) {
      res = mul(res, s);
    }
    m /= 2;
    s = mul(s, s);
  }
  cout << res[0][0];
  return 0;
}
