/*
TASK:socks
LANG:c++
*/
#include<iostream>
#include<stdio.h>

using namespace std;
int n;double sum=0;double minsums[31];
unsigned long k;
double price[31];
int packets[31];
int main()
{ cin>>n>>k;
  int i;
  packets[0]=1;
  for(i=1;i<=n;i++)
   { int a;
     cin>>a;
     packets[i]=packets[i-1]*a;
   }
  for(i=0;i<=n;i++)
   cin>>price[i];
  unsigned long socks=0;
  while(1)
  { if((k-socks)<packets[n])break;
    sum+=price[n];
    socks+=packets[n];
  }
  unsigned long   left=k-socks;
  if(left!=0)
  {
     for(i=0;i<n;i++)
      { if(left%packets[i]==0)minsums[i]=(left/packets[i])*price[i];
	else
	if(left%packets[i]!=0)minsums[i]=((left/packets[i])+1)*price[i];
       }
    double minimal=9999;
    for(i=0;i<n;i++)
     if(minsums[i]<minimal)minimal=minsums[i];
    sum+=minimal;
    printf("%0.2f",sum);
  }
      else printf("%0.2f",sum);
      cout<<endl;
	 return 0;
}

