output_description: Print the minimum possible total cost.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N D
      A_1 A_2 ... A_N
attempt: import sys
  
  input = sys.stdin.readline
  
  N, D = map(int, input().split())
  A = list(map(int, input().split()))
  
  # cost=abs(i-j)*D+A[i]+A[j]
  
  SUMDA = [D * i - A[-i] for i in range(1, N + 1)]
  SUMDA.reverse()
  
  
  MIN = SUMDA[-1]
  MININD = [None] * N
  MININD[N - 1] = N - 1
  for i in range(N - 2, -1, -1):
      if SUMDA[i] < MIN:
          MIN = SUMDA[i]
          MININD[i] = i
      else:
          MININD[i] = MININD[i + 1]
  
  SUMA = sum(A)
  ANS = float("inf")
  for i in range(N - 2):
      cost = 0
      k = MININD[i + 1]
  
      cost = D * (N - 1) + D * (N - 1 - abs(k - i)) + SUMA * 2 - A[i] - A[k]
      # print(cost)
  
      if ANS > cost:
          ANS = cost
  
  print(ANS)
  
problem_description: Statement
  
  There are N cities in Republic of AtCoder. The size of the i-th city is A_{i}.
  Takahashi would like to build N-1 bidirectional roads connecting two cities so
  that any city can be reached from any other city by using these roads.
  
  Assume that the cost of building a road connecting the i-th city and the j-th
  city is |i-j| \times D + A_{i} + A_{j}. For Takahashi, find the minimum
  possible total cost to achieve the objective.
samples: [{"input": "3 1\n    1 100 1", "output": "106\n    \n\nThis cost can be achieved by, for example, building roads connecting City 1, 2\nand City 1, 3.\n\n* * *"}, {"input": "3 1000\n    1 100 1", "output": "2202\n    \n\n* * *"}, {"input": "6 14\n    25 171 7 1 17 162", "output": "497\n    \n\n* * *"}, {"input": "12 5\n    43 94 27 3 69 99 56 25 8 15 46 8", "output": "658"}]