#include <bits/stdc++.h>
using namespace std;
vector<int> odd, even;
vector<int> ans[100005], rem;
int main() {
  int n, k, p;
  cin >> n >> k >> p;
  p = k - p;
  long long x;
  for (int i = 0; i < n; i++) {
    scanf("%I64d", &x);
    if (x % 2)
      odd.push_back(x);
    else
      even.push_back(x);
  }
  int o = odd.size(), e = even.size();
  if (p % 2 != o % 2) return cout << "NO", 0;
  if (p > o) return cout << "NO", 0;
  if (p + (o - p) / 2 + e < k) return cout << "NO", 0;
  cout << "YES\n";
  int c = 0;
  x = o;
  for (int i = 0; i < p; i++) {
    ans[c++].push_back(odd[o - 1]);
    o--;
  }
  int ev = k - p;
  while (o >= 2) {
    ans[c].push_back(odd[o - 1]);
    o--;
    ans[c++].push_back(odd[o - 1]);
    o--;
  }
  for (int i = 0; i < e; i++) {
    ans[c++].push_back(even[i]);
  }
  for (int i = k - 1; i < c; i++) {
    for (int j = 0; j < ans[i].size(); j++) {
      rem.push_back(ans[i][j]);
    }
  }
  for (int i = 0; i < k - 1; i++) {
    int y = ans[i].size();
    printf("%d ", y);
    for (int j = 0; j < y; j++) {
      cout << ans[i][j] << " ";
    }
    cout << "\n";
  }
  int y = rem.size();
  cout << y << " ";
  for (int i = 0; i < y; i++) cout << rem[i] << " ";
  return 0;
}
