#include <bits/stdc++.h>
using namespace std;
const int iinf = 0x3f3f3f3f;
const long long linf = 0x3f3f3f3f3f3f3f3f;
const int N = 20;
int n, m, a[N], b[N];
const int mN = 21;
using uint = unsigned int;
struct Matrix {
  uint arr[mN][mN];
  Matrix() {
    for (int i(0); i < (mN); ++i)
      for (int j(0); j < (mN); ++j) arr[i][j] = iinf << 1;
  }
  uint* operator[](int i) { return arr[i]; }
  Matrix friend operator*(Matrix p, Matrix q) {
    Matrix res;
    for (int t(0); t < (mN); ++t)
      for (int i(0); i < (mN); ++i)
        for (int j(0); j < (mN); ++j)
          res[i][j] = min(res[i][j], p[i][t] + q[t][j]);
    return res;
  }
  Matrix Pow(int first) {
    Matrix res, a(*this);
    for (int i(0); i < (mN); ++i) res[i][i] = 0;
    for (; first; first >>= 1, a = a * a)
      if (first & 1) res = res * a;
    return res;
  }
} te, f, e;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i(0); i < (n); ++i) cin >> a[i];
  for (int i(0); i < (n); ++i) cin >> b[i];
  f[0][0] = 0;
  for (int i(0); i < (n + 1); ++i) te[i][i] = 0;
  for (int i(0); i < (n); ++i) {
    e = Matrix();
    for (int j(0); j < (n); ++j) e[j][j + 1] = a[i], e[j + 1][j] = b[i];
    te = te * e;
  }
  f = f * te.Pow(m);
  cout << f[0][0] << '\n';
  return 0;
}
