#include <bits/stdc++.h>
using namespace std;
int n, k, p, x;
vector<int> a, b;
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> k >> p;
  vector<int> even[p];
  vector<int> odd[k - p];
  for (int i = 0; i < n; i++)
    cin >> x, (x % 2) ? b.push_back(x) : a.push_back(x);
  for (int i = 0; i < k - p; i++) {
    if (b.size())
      odd[i].push_back(b.back()), b.pop_back();
    else
      return cout << "NO", 0;
  }
  for (int i = 0; i < p; i++) {
    if (a.size())
      even[i].push_back(a.back()), a.pop_back();
    else if (b.size() > 1)
      even[i].push_back(b.back()), b.pop_back(), even[i].push_back(b.back()),
          b.pop_back();
    else
      return cout << "NO", 0;
  }
  if (a.size()) {
    while (!a.empty()) {
      if (p > 0)
        even[0].push_back(a.back()), a.pop_back();
      else
        odd[0].push_back(a.back()), a.pop_back();
    }
  }
  if (b.size() && (int)b.size() % 2 == 0) {
    while (b.size()) {
      if (k - p > 0)
        odd[0].push_back(b.back()), b.pop_back();
      else
        even[0].push_back(b.back()), b.pop_back();
    }
  } else if (b.size())
    return cout << "NO", 0;
  cout << "YES" << endl;
  for (int i = 0; i < p; i++) {
    cout << even[i].size() << " ";
    for (auto j : even[i]) cout << j << " ";
    cout << endl;
  }
  for (int i = 0; i < k - p; i++) {
    cout << odd[i].size() << " ";
    for (auto j : odd[i]) cout << j << " ";
    cout << endl;
  }
  return 0;
}
