#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define ll long long int
#define vv vector<long long>
#define dq deque<long long>
#define mpp map<long long,long long>
#define ms multiset<long long>
#define ss set<long long>
#define vpp vector<pair<long long, long long>>
#define MOD 1000000007
#define YES cout<<"YES"<<endl
#define NO cout<<"NO"<<endl
#define all_v v.begin(),v.end()
#define all_a a.begin(),a.end()
#define sort_rev sort(v.rbegin(),v.rend())
#define all_n for(int i=0;i<n;i++)
#define print for(auto it:v)cout<<it<<" "
#define print_vp for(auto it:vp)cout<<it.first<<" "<<it.second<<endl
#define print_mp for(auto it:mp) cout<<it.first<<" "<<it.second<<endl
#define scan_v for(int i=0;i<n;i++)cin>>v[i]
#define scan_a for(int i=0;i<n;i++)cin>>a[i]
void requisite(){
ios::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
}
int main() {
requisite();
ll n,k;
cin>>n>>k;
vv v(n);
scan_v;
ss s;
vv a=v;
sort(all_v);
ll count=0;
ll max_count=0;
ll flag=0;
for (int i = 0; i < n; ++i) {
if (a[i]!=v[i]) {
count++;
if (flag==0){
s.insert(v[i]);
s.insert(a[i]);
}
}
else{
max_count= max(count,max_count);
if (!s.empty())
flag++;
count=0;
}
}
if (max_count<=k){
YES;
for(auto it:s)cout<<it<<" ";
cout<<endl;
}
else NO;
return 0;
}