#include <bits/stdc++.h>
using namespace std;
void solve() {
  int n, k, p;
  cin >> n >> k >> p;
  long long int arr[n];
  long long int sum = 0;
  for (int i = 0; i < n; i++) {
    cin >> arr[i];
    sum += arr[i];
  }
  if (sum % 2 != (k - p) % 2) {
    cout << "NO" << endl;
    return;
  }
  vector<int> odd;
  vector<int> even;
  for (int i = 0; i < n; i++) {
    if (arr[i] % 2 == 1)
      odd.push_back(arr[i]);
    else
      even.push_back(arr[i]);
  }
  if (odd.size() < (k - p)) {
    cout << "NO" << endl;
    return;
  }
  vector<int> ans[k];
  for (int i = 0; i < k - p; i++) {
    ans[i].push_back(odd.back());
    odd.pop_back();
  }
  if (even.size() + ((odd.size()) / 2) < p) {
    cout << "NO" << endl;
    return;
  }
  cout << "YES" << endl;
  for (int i = k - p; i < k; i++) {
    if (even.size() != 0) {
      ans[i].push_back(even.back());
      even.pop_back();
    } else {
      ans[i].push_back(odd.back());
      odd.pop_back();
      ans[i].push_back(odd.back());
      odd.pop_back();
    }
  }
  while (even.size()) {
    ans[0].push_back(even.back());
    even.pop_back();
  }
  while (odd.size()) {
    ans[k - 1].push_back(odd.back());
    odd.pop_back();
  }
  for (auto temp : ans) {
    cout << temp.size() << " ";
    for (int i : temp) cout << i << " ";
    cout << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  solve();
}
