#include <bits/stdc++.h>
using namespace std;
long long int a[25], b[25], dp[50][50];
vector<vector<long long> > c(const vector<vector<long long> > &a,
                             const vector<vector<long long> > &b) {
  long long int size = a.size();
  vector<vector<long long> > MP(size,
                                vector<long long>(size, 1000000000000000000));
  for (int k = 0; k < size; k++)
    for (int i = 0; i < size; i++)
      for (int j = 0; j < size; j++)
        MP[i][j] = min(MP[i][j], a[i][k] + b[k][j]);
  return MP;
}
vector<vector<long long> > f(vector<vector<long long> > a, int p) {
  long long int size = a.size();
  vector<vector<long long> > MP(size,
                                vector<long long>(size, 1000000000000000000));
  for (int i = 0; i < size; i++) MP[i][i] = 0;
  while (p > 0) {
    if (p & 1) MP = c(MP, a);
    a = c(a, a);
    p /= 2;
  }
  return MP;
}
int main() {
  long long int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> a[i - 1];
  for (int i = 1; i <= n; i++) cin >> b[i - 1];
  vector<vector<long long> > x(n + 1,
                               vector<long long>(n + 1, 1000000000000000000));
  for (int k = 0; k < n + 1; k++) {
    for (int i = 0; i < 32; i++)
      for (int j = 0; j < 32; j++) dp[i][j] = 1000000000000000000;
    dp[0][k] = 0;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n + 1; j++) {
        if (j > 0) dp[i + 1][j] = min(dp[i + 1][j], dp[i][j - 1] + a[i]);
        dp[i + 1][j] = min(dp[i + 1][j], dp[i][j + 1] + b[i]);
      }
    }
    for (int i = 0; i < n + 1; i++) x[k][i] = dp[n][i];
  }
  cout << f(x, m)[0][0] << endl;
}
