#include <bits/stdc++.h>
using namespace std;
int n, k, p, a[100005];
inline bool cmp(const int &a, const int &b) { return a % 2 == 1 && b % 2 == 0; }
int main() {
  scanf("%d%d%d", &n, &k, &p);
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  sort(a + 1, a + 1 + n, cmp);
  int l = 1;
  while (l <= n && a[l] % 2 == 1) ++l;
  if (p > (l - 1) / 2 + n - l + 1 || k - p > l - 1 ||
      ((l - 1 & 1) ^ (k - p & 1)) == 1 ||
      (p > n - l + 1 && k - p > l - 1 - (p - (n - l + 1)) * 2)) {
    puts("NO");
    return 0;
  }
  puts("YES");
  if (n - p + 1 < l) {
    for (int i = l; i <= n; ++i) printf("1 %d\n", a[i]);
    for (int i = l - ((p - (n - l + 1)) * 2); i < l - 2; i += 2)
      printf("2 %d %d\n", a[i], a[i + 1]);
    printf("%d %d %d", 2 + l - ((p - (n - l + 1)) * 2) - 1 - (k - p), a[l - 2],
           a[l - 1]);
    for (int i = k - p + 1; i <= l - ((p - (n - l + 1)) * 2) - 1; ++i)
      printf(" %d", a[i]);
    puts("");
    for (int i = 1; i <= k - p; ++i) printf("1 %d\n", a[i]);
    return 0;
  }
  for (int i = n - p + 2; i <= n; ++i) {
    putchar('1');
    printf(" %d\n", a[i]);
  }
  if (n - p + 1 <= n) {
    printf("%d", n - p + 1 - (k - p));
    for (int i = k - p + 1; i <= n - p + 1; ++i) printf(" %d", a[i]);
    puts("");
  } else {
    printf("%d", n - (k - p) + 1);
    for (int i = k - p; i <= n; ++i) printf(" %d", a[i]);
    puts("");
    for (int i = 1; i <= k - p - 1; ++i) printf("1 %d\n", a[i]);
    return 0;
  }
  for (int i = 1; i <= k - p; ++i) {
    printf("1 %d\n", a[i]);
  }
}
