#include <bits/stdc++.h>
using namespace std;
int INF = 1e9;
int const N = 1e5 + 16;
int const M = 1e9 + 7;
int n, k, p;
int a[2][N];
int cnt[2];
int main() {
  scanf("%d%d%d", &n, &k, &p);
  for (int i = 0; i < n; ++i) {
    int x;
    scanf("%d", &x);
    a[x & 1][cnt[x & 1]++] = x;
  }
  int odd = k - p;
  if (cnt[1] < odd || ((cnt[1] - odd) & 1) || cnt[0] + (cnt[1] - odd) / 2 < p)
    puts("NO"), exit(0);
  puts("YES");
  if (p) {
    while (odd--) printf("1 %d\n", a[1][--cnt[1]]);
  } else {
    while (odd--) {
      if (odd == 0) {
        int z = cnt[0];
        printf("%d", cnt[1] + cnt[0]);
        while (cnt[1]) printf(" %d", a[1][--cnt[1]]);
        while (cnt[0]) printf(" %d", a[0][--cnt[0]]);
      } else {
        printf("1 %d\n", a[1][--cnt[1]]);
      }
    }
  }
  while (p--) {
    if (p == 0) {
      printf("%d", cnt[0] + cnt[1]);
      while (cnt[0]) printf(" %d", a[0][--cnt[0]]);
      while (cnt[1]) printf(" %d", a[1][--cnt[1]]);
    } else if (cnt[1] >= 2) {
      printf("2 %d %d\n", a[1][cnt[1] - 1], a[1][cnt[1] - 2]);
      cnt[1] -= 2;
    } else {
      printf("1 %d\n", a[0][--cnt[0]]);
    }
  }
}
