#include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef unsigned u; typedef vector vi; typedef pair pii; #define F first; #define S second; #define PB push_back; #define MP make_pair; bool EQ(double a, double b) { return (fabs(a-b) / (a+b) < DBL_EPSILON); } vector points ; ll closest ( ll a) { ll idx = 0; ll dist = 999999; for ( ll i = 0 ; i < (ll)points.size() ; ++ i ) { if( abs(points[i] - a) < dist) { dist = a - points[i]; idx= i; } } return idx; } void print() { for ( auto & it : points ) cout << it << " "; cout << endl; } ll calcDist ( ll arr, ll dist , ll idx) { ll sum = 0; for ( ll i = 0 ; i < (ll)points.size() ; ++ i ) { int val = abs(points[i] - arr + (idx - i) * dist); //cout << val << endl; sum += val; } return sum; } ll sumMm () { ll sum = 0 ; for ( auto & it : points ) sum += it ; return sum; } int main( ) { ios_base::sync_with_stdio(0); cin.tie(0); // code size_t n , dist ; cin >> n >> dist ; for ( size_t i = 0 ; i < n ; ++ i ) { ll tmp ; cin >> tmp ; points.push_back( tmp ); } sort(points.begin(), points.end()); ll closestI = n/2; ll arr = points[closestI]; int res = calcDist(arr, dist, closestI); if(n % 2 == 0){ ll closestI = n/2 -1; ll arr = points[closestI]; int tmp = calcDist(arr, dist, closestI); if(tmp < res) res = tmp; } cout << res << endl; return 0; }