← Home
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()
}