← Home
```go
package main

import (
	"fmt"
	"sort"
)

func main() {
	var n, k, MM int64
	fmt.Scan(&n, &k, &MM)
	t := make([]int64, k)
	var S int64 = 0
	for i := int64(0); i < k; i++ {
		fmt.Scan(&t[i])
		S += t[i]
	}
	ts := make([]int64, k)
	copy(ts, t)
	sort.Slice(ts, func(i, j int) bool { return ts[i] < ts[j] })
	var ans int64 = 0
	for cc := int64(0); cc <= n; cc++ {
		var cost int64 = cc * S
		if cost > MM {
			continue
		}
		var r int64 = MM - cost
		var m int64 = n - cc
		var extra int64 = 0
		var rem int64 = r
		for i := int64(0); i < k; i++ {
			tj := ts[i]
			can := rem / tj
			if can > m {
				can = m
			}
			extra += can
			rem -= can * tj
		}
		points := cc * (k + 1) + extra
		if points > ans {
			ans = points
		}
	}
	fmt.Println(ans)
}
```