#include <bits/stdc++.h>
using namespace std;
const int N = 1E5;
vector<int> vf, vz;
int main() {
  ios_base::sync_with_stdio(false);
  int n, k, p;
  cin >> n >> k >> p;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    if (x % 2 == 0)
      vz.push_back(x);
    else
      vf.push_back(x);
  }
  int tf = vf.size(), tz = vz.size();
  if (tf < (k - p) || p > tz + (tf - (k - p)) / 2 || (k - p) % 2 != tf % 2)
    cout << "NO";
  else {
    if ((tf - (k - p)) % 2 == 1) {
      cout << "NO";
    }
    if ((tf - (k - p)) % 2 == 0) {
      cout << "YES" << endl;
      if (p == 0) {
        for (int i = 0; i < k - 1; i++) cout << "1 " << vf[i] << endl;
        cout << tf - (k - 1) + tz;
        for (int i = k - 1; i < tf; i++) cout << ' ' << vf[i];
        for (int i = 0; i < tz; i++) cout << ' ' << vz[i];
        cout << endl;
      } else if (tz >= p) {
        for (int i = 0; i < p - 1; i++) cout << "1 " << vz[i] << endl;
        cout << tz - p + 1 + tf - (k - p);
        for (int i = p - 1; i < tz; i++) cout << ' ' << vz[i];
        for (int i = 0; i < tf - (k - p); i++) cout << ' ' << vf[i];
        cout << endl;
        for (int i = tf - (k - p); i < tf; i++) cout << "1 " << vf[i] << endl;
      } else {
        for (int i = 0; i < tz; i++) cout << "1 " << vz[i] << endl;
        for (int i = 0; i < (p - tz) - 1; i++)
          cout << "2 " << vf[i * 2] << ' ' << vf[i * 2 + 1] << endl;
        cout << tf - (p - tz - 1) * 2 - (k - p);
        for (int i = (p - tz - 1) * 2; i < tf - (k - p); i++)
          cout << ' ' << vf[i];
        cout << endl;
        for (int i = tf - (k - p); i < tf; i++) cout << "1 " << vf[i] << endl;
      }
    }
  }
}
