#define _USE_MATH_DEFINES
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
#define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include <nmmintrin.h>
#include <immintrin.h>
#include <mmintrin.h>

using namespace std;

#define dprint(Exp,...) if(Exp){fprintf(stderr, __VA_ARGS__);}
#define printe(...) fprintf(stderr, __VA_ARGS__);
#define PrtExp(_Exp)  cerr<< #_Exp <<" = "<< (_Exp)
#define PrtExpN(_Exp)  cerr<< #_Exp <<" = "<< (_Exp) <<"\n"

#define SINT(n) scanf("%d",&n)
#define SINT2(n,m) scanf("%d %d",&n,&m)
#define SINT3(n,m,o) scanf("%d %d %d",&n,&m,&o)
#define SINT4(n,m,o,P) scanf("%d %d %d %d",&n,&m,&o,&P)
#define SINT5(n,m,o,P,q) scanf("%d %d %d %d %d",&n,&m,&o,&P,&q)
#define SLL(n) scanf("%lld",&n)
#define SLL2(n,m) scanf("%lld %lld",&n,&m)
#define SLL3(n,m,o) scanf("%lld %lld %lld",&n,&m,&o)
#define SST(s) scanf("%s",s)
#define SCH(c) scanf("%c",&c)

#define GC() getchar()

#define PINT(n) printf("%d",(int)(n))
#define PINT2(n,m) printf("%d %d",(int)(n),(int)(m))
#define PINT3(n,m,l) printf("%d %d %d",(int)(n),(int)(m),(int)(l))
#define PLL(n) printf("%lld",(long long)(n))
#define PST(s) printf("%s",(s))
#define PCH(s) printf("%c",(s))

#define PINTN(n) printf("%d\n",(int)(n))
#define PINT2N(n,m) printf("%d %d\n",(int)(n),(int)(m))
#define PINT3N(n,m,l) printf("%d %d %d\n",(int)(n),(int)(m),(int)(l))
#define PLLN(n) printf("%lld\n",(long long)(n))
#define PSTN(s) printf("%s\n",(s))
#define PCHN(s) printf("%c\n",(s))

#define PSP() printf(" ")
#define PN() printf("\n")

#define PC(c) putchar(c)
#define CSP (' ')
#define SN ("\n")

#define rep(i,a) for(int i=0;i<a;i++)
#define reP(i,a) for(int i=0;i<=a;i++)
#define Rep(i,a) for(int i=a-1;i>=0;i--)
#define ReP(i,a) for(int i=a;i>=0;i--)

#define rEp(i,a) for(i=0;i<a;i++)
#define rEP(i,a) for(i=0;i<=a;i++)
#define REp(i,a) for(i=a-1;i>=0;i--)
#define REP(i,a) for(i=a;i>=0;i--)

#define repft(i,a,b) for(int i=a;i<b;i++)
#define repfT(i,a,b) for(int i=a;i<=b;i++)
#define Repft(i,a,b) for(int i=a-1;i>=b;i--)
#define RepfT(i,a,b) for(int i=a;i>=b;i--)

#define foreach(a,it) for(auto it = a.begin(); it != a.end(); ++it)

#define FILL(a,v) fill(begin(a),end(a), v)
#define FILL0(a) memset(a,0,sizeof(a))
#define FILL1(a) memset(a,-1,sizeof(a))

typedef long long ll;

typedef unsigned long long ull;
typedef pair<int, int> Pi;
typedef pair<ll, ll>   Pll;


const int INF = 1'010'000'000; // 0x3C33'6080
const ll INFLL = 0x1f1f1f1f1f1f1f1fLL;//2,242,545,357,980,376,863

template <class A, class B> inline ostream& operator<<(ostream& st, const pair<A, B>& P) { return st << "(" << P.first << "," << P.second << ")"; };
template <class A, class B> inline pair<A, B> operator+(const pair<A, B>& P, const pair<A, B>& Q) { return pair<A, B>(P.first + Q.first, P.second + Q.second); };
template <class A, class B> inline pair<A, B> operator-(const pair<A, B>& P, const pair<A, B>& Q) { return pair<A, B>(P.first - Q.first, P.second - Q.second); };

#define fs  first
#define sc  second



int n;
int a[200005];

int ma = 0;
int z[200005];


bool used[16];
void test() {
	FILL0(used);
	vector<int> ret;
	rep(kk, 1000000009) {
		rep(i, n) {
			if (used[a[i]] == false) {
				ret.push_back(a[i]);
				used[a[i]] = true;
			} else {
				while (ret.back() != a[i]) {
					used[ret.back()] = false;
					ret.pop_back();
				}
				used[ret.back()] = false;
				ret.pop_back();
			}
			/*
			printf("[%2d, %2d]{%2d} :", kk, i, a[i]);
			for (auto&v : ret) printf(" %2d", v);
			puts("");
			*/
		}
		if (ret.empty()) {

			printf("k:%d :  %d  ", kk, n);
			rep(i, n) printf(" %2d", a[i]);
			puts("");

			if (ma < kk) {
				ma = kk;
				rep(i, n) z[i] = a[i];
			}
			return;
		}
	}
}

void dfs(int i) {
	if (i == n) {
		return test();
	}
	reP(j, i) {
		a[i] = j;
		dfs(i + 1);
	}
}

void test(int N) {
	n = N;
	ma = 0;
	dfs(0);

	cout << "n " << n << "  ma " << ma << "  a :";
	rep(i, n) cout << " " << z[i];
	cout << endl;
}


set<int> idx[200005];
int pls[200005];

int main() {
	
	ll n, k;
	while (cin >> n >> k) {
		ll nk = n * k;
		rep(i, n) idx[i].clear();
		rep(i, n) cin >> a[i];
		rep(i, n) {
			idx[a[i]].insert(i);
		}
		rep(i, n) {
			idx[a[i]].insert(i+n);
		}
		rep(i, n) {
			auto it = idx[a[i]].upper_bound(i);
			pls[i] = (*it)-i;
			//printf("[%d] %d  +%d\n", i, a[i], pls[i]);
		}
		vector<int> ret;
		ll x = 0;
		while (x < nk) {
			int xm = x % n;
			if (x != 0 && xm == 0) {
				//printe("MOD!! %lld\n", x);
				nk %= x; x = 0;

				if (x >= nk) break;
			}
			ll z = x + pls[xm] + 1;
			if (z > nk) {
				ret.push_back(a[xm]);
				++x; continue;
			} else {
				x = z;
			}
		}
		for (auto&v : ret) {
			cout << v << " ";
		}
		cout << endl;

	}
	//*/

	/*
	repft(i, 1, 16) {
		test(i);
	}
	*/
	//while (cin >> n >> k) {
	
	/*
	while (cin >> n) {
		int k = n*2;
		rep(i, n) cin >> a[i];

		set<int> m;
		vector<int> ret;
		rep(kk, k) {
			rep(i, n) {
				if (m.count(a[i]) == 0) {
					ret.push_back(a[i]);
					m.insert(a[i]);
				} else {
					while (ret.back() != a[i]) {
						m.erase(ret.back());
						ret.pop_back();
					}
					m.erase(ret.back());
					ret.pop_back();
				}
				printf("[%2d, %2d]{%2d} :", kk, i, a[i]);
				for (auto&v : ret) printf(" %2d", v);
				puts("");
			}
			if (ret.empty()) {
				puts("--------------");
			} else {
				puts("");
			}
		}
	}
	//*/

}


/*


*/

Measured memory_bytes: 32120