#include <bits/stdc++.h>
using namespace std;
long long a[100010];
int main() {
  long long i, j, n, k, p, no = 0, ne = 0, x, r, sum = 0, l;
  vector<long long> even, odd;
  cin >> n >> k >> p;
  for (i = 0; i < n; i++) {
    cin >> a[i];
    sum += a[i];
    if (a[i] % 2 == 0) {
      ne++;
      even.push_back(a[i]);
    } else {
      no++;
      odd.push_back(a[i]);
    }
  }
  long long tempe, tempo;
  tempe = ne;
  tempo = no;
  if (p > ne) {
    no -= (2 * (p - ne));
  }
  if (no < k - p || sum % 2 != (k - p) % 2) {
    cout << "NO\n";
    return 0;
  } else if ((no - (k - p)) % 2 != 0) {
    cout << "NO\n";
    return 0;
  }
  no = tempo;
  ne = tempe;
  cout << "YES\n";
  long long cnt = 0;
  for (i = 1; i <= p; i++) {
    if (cnt == k - 1) {
      cout << even.size() + odd.size() << " ";
      for (j = 0; j < even.size(); j++) {
        cout << even[j] << " ";
      }
      for (j = 0; j < odd.size(); j++) {
        cout << odd[j] << " ";
      }
      cnt++;
      return 0;
    } else {
      if (even.size()) {
        l = even[even.size() - 1];
        cout << "1 " << l << "\n";
        even.pop_back();
      } else {
        cout << "2 ";
        cout << odd[odd.size() - 1] << " " << odd[odd.size() - 2] << "\n";
        odd.pop_back();
        odd.pop_back();
      }
      cnt++;
    }
  }
  for (i = 1; i <= (k - p); i++) {
    if (cnt == k - 1) {
      cout << even.size() + odd.size() << " ";
      for (j = 0; j < even.size(); j++) {
        cout << even[j] << " ";
      }
      for (j = 0; j < odd.size(); j++) {
        cout << odd[j] << " ";
      }
      cnt++;
      return 0;
    } else {
      if (odd.size()) {
        l = odd[odd.size() - 1];
        cout << "1 " << l << "\n";
        odd.pop_back();
      }
      cnt++;
    }
  }
  return 0;
}
