#include <bits/stdc++.h>
using namespace std;
vector<int> odd, even;
int main() {
  int cnt1 = 0, cnt2 = 0, tem = -1;
  int n, k, p, x;
  scanf("%d%d%d", &n, &k, &p);
  for (int i = 0; i < n; i++) {
    scanf("%d", &x);
    if (x % 2 == 0) {
      cnt2++;
      even.push_back(x);
    } else {
      if (cnt1 >= k - p) {
        if (tem == -1)
          tem = x;
        else {
          even.push_back(tem);
          even.push_back(x);
          cnt2++;
          tem = -1;
        }
      } else {
        cnt1++;
        odd.push_back(x);
      }
    }
  }
  if (cnt1 < k - p || cnt2 < p || tem != -1)
    printf("NO\n");
  else {
    printf("YES\n");
    if (p == 0) {
      for (int i = 0; i < k - p - 1; i++) printf("%d %d\n", 1, odd[i]);
      printf("%d", n - (k - p - 1));
      for (int i = 0; i < even.size(); i++) printf(" %d", even[i]);
      printf(" %d\n", odd[k - p - 1]);
      return 0;
    }
    for (int i = 0; i < k - p; i++) printf("%d %d\n", 1, odd[i]);
    int tem2 = 0, cur = 0;
    while (tem2 < p - 1) {
      if (even[cur] % 2 == 0) {
        printf("%d %d\n", 1, even[cur]);
        cur++;
      } else {
        printf("%d %d %d\n", 2, even[cur], even[cur + 1]);
        cur++;
        cur++;
      }
      tem2++;
    }
    if (even.size() > cur) printf("%d", even.size() - cur);
    for (int i = cur; i < even.size(); i++) printf(" %d", even[i]);
  }
  return 0;
}
