# -*- coding: utf-8 -*-
import bisect
import heapq
import math
import random
import sys
from collections import Counter, defaultdict, deque
from decimal import ROUND_CEILING, ROUND_HALF_UP, Decimal
from functools import lru_cache, reduce
from itertools import combinations, combinations_with_replacement, product, permutations
from operator import add, mul, sub
sys.setrecursionlimit(10000)
def read_int():
return int(input())
def read_int_n():
return list(map(int, input().split()))
def read_float():
return float(input())
def read_float_n():
return list(map(float, input().split()))
def read_str():
return input().strip()
def read_str_n():
return list(map(str, input().split()))
def error_print(*args):
print(*args, file=sys.stderr)
def mt(f):
import time
def wrap(*args, **kwargs):
s = time.time()
ret = f(*args, **kwargs)
e = time.time()
error_print(e - s, 'sec')
return ret
return wrap
@mt
def slv(N, X, A):
r = 0
for i in range(N):
c = (sys.maxsize, -1)
for j in range(N):
c = min(c, (A[i-j] + j*X, j), key=lambda x: x[0])
r = max(r, c[1])
ans = 0
for i in range(N):
c = (sys.maxsize, -1)
for j in range(r+1):
c = min(c, (A[i-j], j), key=lambda x: x[0])
ans += A[i-c[1]]
ans += r*X
return ans
def main():
N, X = read_int_n()
A = read_int_n()
print(slv(N, X, A))
if __name__ == '__main__':
main()