#include <bits/stdc++.h>
using namespace std;
int even[100010 + 10], odd[100010 + 10];
int indpar, indimpar;
int main() {
  int n, k, p;
  scanf("%d%d%d", &n, &k, &p);
  while (n--) {
    int c;
    scanf("%d", &c);
    if (c & 1)
      odd[indimpar++] = c;
    else
      even[indpar++] = c;
  }
  k -= p;
  int ipar(indimpar), par(indpar);
  for (int i(0); i < p; i++) {
    if (par == 0 && ipar < 2) {
      printf("NO\n");
      return 0;
    }
    if (par)
      par--;
    else
      ipar -= 2;
  }
  for (int i(0); i < k; i++) {
    if (!ipar) {
      printf("NO\n");
      return 0;
    }
    ipar--;
  }
  if (ipar & 1) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  for (int i(0); i < p; i++) {
    if (i == p - 1 && k == 0) {
      printf("%d", indpar + indimpar);
      while (indpar) printf(" %d", even[--indpar]);
      while (indimpar) printf(" %d", odd[--indimpar]);
      printf("\n");
      return 0;
    }
    if (indpar)
      printf("1 %d\n", even[--indpar]);
    else {
      printf("2 %d %d\n", odd[indimpar - 1], odd[indimpar - 2]);
      indimpar -= 2;
    }
  }
  for (int i(0); i < k; i++) {
    if (i == k - 1) {
      printf("%d", indpar + indimpar);
      while (indpar) printf(" %d", even[--indpar]);
      while (indimpar) printf(" %d", odd[--indimpar]);
      printf("\n");
    } else
      printf("1 %d\n", odd[--indimpar]);
  }
  return 0;
}
