← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())

	a := make([]int, n)
	for i := 0; i < n; i++ {
		scanner.Scan()
		a[i], _ = strconv.Atoi(scanner.Text())
	}

	minCE := -1

	c := make([]int, n)
	for i := 0; i < n-1; i++ {
		tempV := a[i] - 1
		for k := i + 1; k < n; k++ {
			c[k] = tempV / a[k]
			tempV %= a[k]
		}

		sumVal := 0
		sumCoins := 0
		for j := i + 1; j < n; j++ {
			sumVal += c[j] * a[j]
			sumCoins += c[j]

			w := sumVal + a[j]
			M := sumCoins + 1

			if minCE != -1 && w >= minCE {
				continue
			}

			gCoins := 0
			tempW := w
			for _, x := range a {
				if tempW >= x {
					gCoins += tempW / x
					tempW %= x
					if tempW == 0 {
						break
					}
				}
			}

			if gCoins > M {
				minCE = w
			}
		}
	}

	fmt.Println(minCE)
}
```