package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
pos := 0
nextInt64 := func() int64 {
for pos < len(data) && (data[pos] == ' ' || data[pos] == '\n' || data[pos] == '\r' || data[pos] == '\t') {
pos++
}
sign := int64(1)
if data[pos] == '-' {
sign = -1
pos++
}
var val int64
for pos < len(data) && data[pos] >= '0' && data[pos] <= '9' {
val = val*10 + int64(data[pos]-'0')
pos++
}
return val * sign
}
n := int(nextInt64())
k := nextInt64()
a := make([]int64, n)
for i := 0; i < n; i++ {
a[i] = nextInt64()
}
sort.Slice(a, func(i, j int) bool { return a[i] < a[j] })
firstIdx := int((k - 1) / int64(n))
firstVal := a[firstIdx]
l := sort.Search(n, func(i int) bool { return a[i] >= firstVal })
r := sort.Search(n, func(i int) bool { return a[i] > firstVal })
cnt := int64(r - l)
k -= int64(l) * int64(n)
secondIdx := int((k - 1) / cnt)
secondVal := a[secondIdx]
out := bufio.NewWriter(os.Stdout)
fmt.Fprintf(out, "%d %d", firstVal, secondVal)
out.Flush()
}