#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const int MAXN = 2e3 + 2;
int n, x, cost[MAXN], rmq[MAXN][15];
ll ans, dp[MAXN][MAXN];

void prep()
{
    for(int i = 0;i < n;i++)
        rmq[i][0] = cost[i];

    for(int i = 1;(1 << i) <= n;i++)
        for(int j = 0;j < n;j++)
            rmq[j][i] = min( rmq[j][i - 1], rmq[j + (1 << (i - 1))][i - 1] );
}

int get_min(int l, int r)
{
    if(l > r)swap(l, r);

    int k = log2(r - l + 1);
    return min( rmq[l][k], rmq[r - (1 << k) + 1][k] );
}

int main()
{
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    #ifdef greed
        freopen(".in", "r", stdin);
    #endif // greed

    cin >> n >> x;
    for(int i = 0;i < n;i++)
        cin >> cost[i];

    prep();

    for(int r = 0;r < n;r++)
    {
        for(int i = 0;i < n;i++)
        {
            int mn1, mn2; mn1 = mn2 = INT_MAX;

            if(i - r < 0)
            {
                mn1 = get_min(0, i);
                mn2 = get_min((i - r + n) % n, n - 1);
            }else{
                mn1 = get_min(i - r, i);
            }
            dp[i][r] += dp[i - 1][r] + min(mn1, mn2);
        }
    }

    ans = INT_MAX;
    for(int i = 0;i < n;i++)
    {
        ll nval = dp[n - 1][i] + 1LL * i * x;
        ans = min(ans, nval);
    }
    cout << ans << '\n';
    return 0;
}
