#ifdef LOCAL
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <cmath>
#include <string>
#include <ctime>
#include <climits>
#include <iomanip>
#include <numeric>
#include <random>
#include <array>
#include <bitset>
#include <unordered_map>
#include <unordered_set>

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

#define int long long

using ll = long long;
using ld = long double;
using namespace std;

template<typename T1, typename T2>
istream& operator>>(istream& in, pair<T1, T2>& p) {
	in >> p.first >> p.second;
	return in;
}

template<typename T1, typename T2>
ostream& operator<<(ostream& out, pair<T1, T2>& p) {
	out << p.first << " " << p.second;
	return out;
}

template<typename T>
istream& operator>>(istream& in, vector<T>& a) {
	for (auto& el : a) {
		in >> el;
	}
	return in;
}

template<typename T>
ostream& operator<<(ostream& out, vector<T>& a) {
	if (a.empty()) return out;
	out << a[0];
	for (int i = 1; i < (int)a.size(); i++) {
		out << " " << a[i];
	}
	return out;
}

const int INF32 = 1e9;
const ll INF64 = 1e18;

void solve() {
	int T;
	cin >> T;
	int n, m;
	cin >> n >> m;
	vector<int> a(n);
	cin >> a;
	if (m == 2) {
		cout << "No";
	} else {
		cout << "Yes\n";
		cout << m - 1;
	}
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
#ifdef LOCAL
	freopen("input.txt", "r", stdin);
	ld start_time = clock();
#endif
	solve();
#ifdef LOCAL
	ld finish_time = clock();
	cout << "\n" << "finished in: " << (finish_time - start_time) / CLOCKS_PER_SEC;
#endif
	return 0;
}