#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; }