#include <bits/stdc++.h>
using namespace std;
const int maxn = 100009;
int n, k, p, x;
long long tek[maxn], t = 1;
long long cift[maxn], c = 1;
vector<vector<int> > v;
int main() {
  cin >> n >> k >> p;
  v.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> x;
    if (x & 1)
      tek[t++] = x;
    else
      cift[c++] = x;
  }
  t--, c--;
  for (int i = 0; i < k - p; i++) {
    if (!t) {
      cout << "NO";
      return 0;
    }
    v[i].push_back(tek[t--]);
  }
  for (int i = k - p; i < k; i++) {
    if (!c && t < 2) {
      cout << "NO";
      return 0;
    }
    if (c)
      v[i].push_back(cift[c--]);
    else {
      v[i].push_back(tek[t--]);
      v[i].push_back(tek[t--]);
    }
  }
  for (int i = 1; i <= c; i++) v[0].push_back(cift[i]);
  c = 0;
  for (int i = 1; i + 1 <= t; i += 2)
    v[0].push_back(tek[i]), v[0].push_back(tek[i + 1]);
  t %= 2;
  if (c || t) {
    cout << "NO";
    return 0;
  }
  cout << "YES\n";
  for (int i = 0; i < k; i++) {
    cout << (int)v[i].size() << " ";
    for (int j = 0; j < (int)v[i].size(); j++) cout << v[i][j] << " ";
    cout << "\n";
  }
  return 0;
}
