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
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define LL long long 
using namespace std;

const int M = 250001;
int w,n,a[M],c[M],pre[M],f[60][M],s[M];
LL m,k,b[60][M];

int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]), w=max(w,a[i]);
	for(int i=1;i<=n;i++)
	{
		if(!c[a[i]]) c[a[i]]=i;
		if(pre[a[i]]) f[0][pre[a[i]]]=i%n+1;
		if(i==n && pre[a[i]]) f[0][pre[a[n]]]=1, b[0][pre[a[n]]]=(n!=1 ? 1 : 2);
		pre[a[i]]=i;
	}
	
	for(int i=1;i<=n;i++) if(pre[a[i]]==i)
	{
		f[0][i]=c[a[i]]%n+1;
		b[0][i]=f[0][i]==1?2:1;
	}
	for(int i=1;i<=58;i++)
		for(int j=1;j<=n;j++) f[i][j]=f[i-1][f[i-1][j]], b[i][j]=b[i-1][f[i-1][j]]+b[i-1][j];
		
	w=1;
	for(int i=58;i>=0;i--) if(b[i][w]+k<m) 
		k+=b[i][w], w=f[i][w];
	
	memset(c,0,sizeof(c));
	int tp=0;
	if(n==1 && m!=k+1)  return 0;
	for(int i=w;i<=n;i++)
	{
		if(c[a[i]])
		{
			while(s[tp]!=a[i]) c[s[tp--]]=0;
			tp--; c[a[i]]=0;
		}
		else s[++tp]=a[i], c[a[i]]=1;
	}
	for(int i=1;i<=tp;i++) printf("%d\n",s[i]);
	//printf("\n");
}