#include <bits/stdc++.h>
using namespace std;
int n,d;
int dis[100005];
int pri[100005];
int f[100005];
int distan(int i,int j){
return dis[i]-dis[j];
}
int main(){
memset(f,0x7f7f,sizeof(f));
cin>>n>>d;
for(int i=2;i<=n;i++){
cin>>dis[i];
dis[i]+=dis[i-1];
}
for(int i=1;i<=n;i++){
cin>>pri[i];
}
int op=0;
f[1]=0;
for( int i = 2; i <= n; i ++){
for( int j = i-1; j >= 1 ; j --){
if(f[j] + ceil(distan(i,j)/d*1.0)*pri[j] < f[i]){
f[i] = f[j] + ceil (( distan(i,j) - op * d )/d*1.0) * pri[j];
op = ceil ( distan(i,j) / d * 1.0) * d - distan(i,j);//多余的油
}
}
}
cout<<f[n];
}