```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n, k int
var b int64
if _, err := fmt.Fscan(in, &n, &k); err != nil {
return
}
fmt.Fscan(in, &b)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
asc := make([]int64, n)
copy(asc, a)
sort.Slice(asc, func(i, j int) bool { return asc[i] < asc[j] })
pref := make([]int64, n+1)
for i := 0; i < n; i++ {
pref[i+1] = pref[i] + asc[i]
}
sumLargest := func(t int) int64 {
if t <= 0 {
return 0
}
if t > n {
t = n
}
return pref[n] - pref[n-t]
}
s1 := sumLargest(k - 1)
s2 := sumLargest(k)
for i := 0; i < n; i++ {
v := a[i]
var S int64
if k-1 <= 0 {
S = 0
} else {
idxFirstGreater := sort.Search(n, func(p int) bool { return asc[p] > v })
tGreater := n - idxFirstGreater
if tGreater >= k-1 {
S = s1
} else {
S = s2 - v
}
}
need := b - v + 1
if S >= need {
fmt.Fprintln(out, i+1)
return
}
}
fmt.Fprintln(out, n)
}
```