For problem statement at 0-999/100-199/120-129/121/problemC.txt this is a correct solution, but verifier at 0-999/100-199/120-129/121/verifierC.go ends with All 100 tests passed can you fix the verifier? ```go
package main
import (
"fmt"
"sort"
)
func isLucky(n int64) bool {
for n > 0 {
d := n % 10
if d != 4 && d != 7 {
return false
}
n /= 10
}
return true
}
var luckyNums []int64
func gen(val int64) {
if val > 1000000000 {
return
}
if val > 0 {
luckyNums = append(luckyNums, val)
}
if val*10+4 <= 1000000000 {
gen(val*10 + 4)
}
if val*10+7 <= 1000000000 {
gen(val*10 + 7)
}
}
func main() {
var n, k int64
if _, err := fmt.Scan(&n, &k); err != nil {
return
}
gen(0)
sort.Slice(luckyNums, func(i, j int) bool { return luckyNums[i] < luckyNums[j] })
fact := make([]int64, 16)
fact[0] = 1
for i := 1; i <= 15; i++ {
fact[i] = fact[i-1] * int64(i)
}
if n <= 15 && k > fact[n] {
fmt.Println("-1")
return
}
suffixLen := int64(13)
if n < 13 {
suffixLen = n
}
prefixEnd := n - suffixLen
ans := 0
for _, x := range luckyNums {
if x <= prefixEnd {
ans++
} else {
break
}
}
nums := make([]int64, 0, suffixLen)
for i := int64(1); i <= suffixLen; i++ {
nums = append(nums, prefixEnd+i)
}
k--
for i := int64(0); i < suffixLen; i++ {
rem := suffixLen - 1 - i
f := fact[rem]
idx := k / f
k %= f
val := nums[idx]
nums = append(nums[:idx], nums[idx+1:]...)
pos := prefixEnd + 1 + i
if isLucky(pos) && isLucky(val) {
ans++
}
}
fmt.Println(ans)
}
```