import java.util.*; public class Main { static long[][] dp; static long[] sums; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int v = sc.nextInt(); sums = new long[n]; sums[0] = sc.nextInt(); double min = sums[0]; int minIdx = 0; for (int i = 1; i < n; i++) { sums[i] = sums[i - 1] + sc.nextInt(); if (min > sums[i] / (i + 1.0)) { min = sums[i] / (i + 1.0); minIdx = i; } } long ans = sums[n - 1]; v -= n; if (v > 0) { int div = v / (minIdx + 1); ans += sums[minIdx] * div; v %= (minIdx + 1); dp = new long[n][v + 1]; for (long[] arr : dp) { Arrays.fill(arr, Long.MAX_VALUE / 2); } ans += dfw(n - 1, v); } System.out.println(ans); } static long dfw(int idx, int value) { if (idx < 0) { if (value <= 0) { return 0; } else { return Long.MAX_VALUE / 2; } } if (dp[idx][value] == Long.MAX_VALUE / 2) { for (int i = 0; i * (idx + 1) <= value; i++) { dp[idx][value] = Math.min(dp[idx][value], dfw(idx - 1, value - i * (idx + 1)) + sums[idx] * i); } } return dp[idx][value]; } }