We have a sequence of N \times K integers: X=(X_0,X_1,\cdots,X_{N \times K-1}). Its elements are represented by another sequence of N integers: A=(A_0,A_1,\cdots,A_{N-1}). For each pair i, j (0 \leq i \leq K-1,\ 0 \leq j \leq N-1), X_{i \times N + j}=A_j holds.

Snuke has an integer sequence s, which is initially empty. For each i=0,1,2,\cdots,N \times K-1, in this order, he will perform the following operation:

* If s does not contain X_i: add X_i to the end of s.
* If s does contain X_i: repeatedly delete the element at the end of s until s no longer contains X_i. Note that, in this case, we do not add X_i to the end of s.



Find the elements of s after Snuke finished the operations.

Constraints

* 1 \leq N \leq 2 \times 10^5
* 1 \leq K \leq 10^{12}
* 1 \leq A_i \leq 2 \times 10^5
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N K
A_0 A_1 \cdots A_{N-1}


Output

Print the elements of s after Snuke finished the operations, in order from beginning to end, with spaces in between.

Examples

Input

3 2
1 2 3


Output

2 3


Input

5 10
1 2 3 2 3


Output

3


Input

6 1000000000000
1 1 2 2 3 3


Output




Input

11 97
3 1 4 1 5 9 2 6 5 3 5


Output

9 2 6
from collections import defaultdict,deque
import sys,heapq,bisect,math,itertools,string,queue,copy,time
sys.setrecursionlimit(10**8)
INF = float('inf')
mod = 10**9+7
eps = 10**-7
def inp(): return int(input())
def inpl(): return list(map(int, input().split()))
def inpl_str(): return list(input().split())

MAX = 10**5*2+3

N,K = inpl()
aa = inpl()
cnts = defaultdict(int)
inds = defaultdict(list)
info = [[0,0] for _ in range(N)]
ed = set(aa)

for i,a in enumerate(aa):
    cnts[a] += 1
    inds[a].append(i)     # inds[a][i-1] : a の i番目の index
    info[i] = [a,cnts[a]] # aa[i] -> info[i][1] 番目の info[i][0]


nexts = [-1]*MAX
ed.add(0)
for e in ed:
    tmp = e
    if e == 0:
        i = 0
    else:
        i = inds[tmp][0] + 1

    while True:
        #print(tmp,i)
        if i == N:
            nexts[e] = 0
            break
        tmp,n = info[i]
        if cnts[tmp] == n:
            nexts[e] = tmp
            break
        else: #cnts[a] != n
            nextind = inds[tmp][n+1-1] # tmpの値の次のindex
            nextind += 1 # の一個次
            i = nextind


visited = [False]*MAX
kero = []
x = 0
L = 0
while True:
    if visited[x]:
        break
    else:
        kero.append(x)
        visited[x] = True
        x = nexts[x]
        L += 1

tmp = kero[K%L-1]
#print(kero)
#print(tmp)

ans = []
if tmp == 0:
    i = 0
else:
    i = inds[tmp][0] + 1

while i < N:
    tmp,n = info[i]
    if cnts[tmp] == n:
        ans.append(tmp)
        i += 1
    else:
        nextind = inds[tmp][n+1-1] # tmpの値の次のindex
        nextind += 1 # の一個次
        i = nextind

print(' '.join(map(str,ans)))
