#include<bits/stdc++.h>
using namespace std;
long long a[10000001],b[10000001],f[10000001],g[10000001],x[10000001];
template<typename type>
inline void read(type &x) {
x = 0; bool flag(0);
char ch = getchar();
while(!isdigit(ch)) flag = ch == '-', ch = getchar();
while(isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
flag ? x = -x : 0;
}
int main()
{
long long n,d;
read(n);
read(d);
for(int i=2;i<=n;i++) read(a[i]);
for(int i=1;i<=n;i++) read(b[i]);
g[1]=b[1];
for(int i=2;i<=n;i++)
{
g[i]=min(g[i-1],b[i]);
a[i]-=x[i-1];
x[i]=((a[i]-1)/d+1)*d-a[i];
f[i]=f[i-1]+g[i-1]*((a[i]-1)/d+1);
}
cout<<f[n]<<endl;
return 0;
}