#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
vector<int> c[2];
int main() {
  int n, k, p, x, m1 = 0, m2 = 0;
  scanf("%d%d%d", &n, &k, &p);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &x);
    if (x & 1) {
      c[0].push_back(x);
      m1++;
    } else {
      c[1].push_back(x);
      m2++;
    }
  }
  if (m1 >= k - p && (m1 - (k - p)) % 2 == 0 &&
      (m2 + (m1 - (k - p)) / 2) >= p) {
    puts("YES");
    int i, j;
    if (p > 0) {
      for (i = 0; i < k - p; i++) printf("1 %d\n", c[0][i]);
      for (j = 0; j < p - 1;) {
        if (j < m2) {
          printf("1 %d\n", c[1][j]);
          j++;
        } else {
          printf("2 %d %d\n", c[0][i], c[0][i + 1]);
          i += 2;
          p--;
        }
      }
      if (m1 - i + m2 - j > 0) {
        printf("%d", m1 - i + m2 - j);
        for (; j < m2; j++) printf(" %d", c[1][j]);
        for (; i < m1; i++) printf(" %d", c[0][i]);
        putchar('\n');
      }
    } else {
      for (i = 0; i < k - 1; i++) printf("1 %d\n", c[0][i]);
      if (m1 - i + m2 > 0) {
        printf("%d", m1 - i + m2);
        for (; i < m1; i++) printf(" %d", c[0][i]);
        for (j = 0; j < m2; j++) printf(" %d", c[1][j]);
        putchar('\n');
      }
    }
  } else {
    puts("NO");
  }
  return 0;
}
