#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll INF=1e18;
using vvl=vector<vector<ll>>;
vvl op(vvl a,vvl b){
    vvl c(a.size(),vector<ll>(b[0].size(),-INF));
    assert(a[0].size()==b.size());
    for(int i=0;i<a.size();i++){
        for(int j=0;j<b[0].size();j++){
            for(int k=0;k<b.size();k++){
                c[i][j]=max(c[i][j],min(a[i][k],b[k][j]));
            }
        }
    }
    return c;
}
vvl e(int K){
    vvl a(K,vector<ll>(K,-INF));
    for(int i=0;i<K;i++)a[i][i]=INF;
    return a;
}
vvl my_pow(vvl a,ll b){
    if(b==0)return e(a.size());
    if(b%2==1)return op(my_pow(a,b-1),a);
    vvl c=my_pow(a,b/2);
    return op(c,c);
}
int main(){
    int K;
    ll N;
    cin>>K>>N;
    vvl A(K,vector<ll>(1)),B(K,vector<ll>(K,-INF));
    for(int i=0;i<K;i++)cin>>A[i][0];
    for(int i=0;i<K;i++)cin>>B[K-1][i];
    for(int i=0;i<K-1;i++)B[i][i+1]=INF;
    cout<<op(my_pow(B,N),A)[0][0]<<endl;
}