cspj2 t2
#include<bits/stdc++.h>
#define MAXN 100009
using namespace std;
int n,d,v[MAXN],a[MAXN],currdis,currplace=1,ans;
int add(int x,int y,int z){
int change=y-x;
if(change%z==0) return change;
else return (change/z+1)*z;
}
int main(){
scanf("%d%d",&n,&d);
for(int i=1;i<n;i++) scanf("%d",&v[i]);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<n;i++){
if(a[i]<a[currplace]) currplace=i;
if(v[i]>currdis){
ans+=(add(currdis,v[i],d)/d)*a[currplace];
currdis+=add(currdis,v[i],d);
currdis-=v[i];
}
}
cout<<ans;
return 0;
}