#include <bits/stdc++.h>
using namespace std; 
#define endl '\n'
#define ll long long int
#define ull unsigned long long int
#define ld long double
#define loop(a,b,c) for(ll i=a;i<=b;i+=c)
#define intarr(arr,n) ll arr[n];for(ll i=0;i<n;i++)cin>>arr[i]
#define inparr(arr,n) for(ll i=0;i<n;i++)cin>>arr[i]
#define inpvec(vec,n) for(ll i=0;i<n;i++){ll var;cin>>var;vec.push_back(var);}
#define pb push_back
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);
#define mod 1000000007
#define newline cout<<endl
#define ump unordered_map<ll,ll>
#define vec vector<ll>
#define mkp make_pair
#define disp(var1,var2) cout<<var1<<" "<<var2<<endl;
#define all(v)             v.begin(),v.end()
#define cout(var) cout<<var<<endl
#define p 998244353
#define teensort(a,r,g,b) a[0]=r;a[1]=g;a[2]=b;sort(a,a+3);
ll a[200005];
void AcDegaYe()
{
    ll n,k;
    cin>>n>>k;
    k=min(k,n);
    for(ll i=0;i<n;i++)
        cin>>a[i];
    list<ll> v;
    ump h;
    for(ll i=0;i<n;i++)
    {
        if(v.size()<k)
        {
            if(h.count(a[i])==0)
            {
                v.push_front(a[i]);
                h[a[i]]=1;
            }
            else
                continue;
        }
        else
        {
            if(h.count(a[i])==1)
            {
                continue;
            }
            else
            {
                h.erase(v.back());
                v.pop_back();
                v.push_front(a[i]);
                h[a[i]]=1;

            }
        }
    }
    cout(v.size());
    for(auto it:v)
    {
        cout<<it<<" ";
    }
    cout<<endl;
}


int main()
{   
    fastio
    //ll t;
    //cin>>t;
    ll t=1;
    while(t--)
    {
        AcDegaYe();
    }
    cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
    return 0;
}