#include <bits/stdc++.h>
using namespace std;
int N, K, P;
vector<int> O, E;
int main() {
  scanf("%d%d%d", &N, &K, &P);
  for (int(i) = (0); ((i)) < ((N)); ++(i)) {
    int a;
    scanf("%d", &a);
    if (a % 2)
      O.push_back(a);
    else
      E.push_back(a);
  }
  if (O.size() < K - P || (O.size() - (K - P)) % 2 ||
      (O.size() - (K - P)) / 2 + E.size() < P) {
    puts("NO");
  } else {
    puts("YES");
    int x = 0, y = 0;
    vector<vector<int> > res(K);
    for (int(i) = (0); ((i)) < ((K - P)); ++(i)) {
      res[i].push_back(O[x++]);
    }
    for (int i = (K - P); (i) < (K); ++i) {
      if (x < O.size()) {
        res[i].push_back(O[x++]);
        res[i].push_back(O[x++]);
      } else {
        res[i].push_back(E[y++]);
      }
    }
    while (x < O.size()) res[0].push_back(O[x++]);
    while (y < E.size()) res[0].push_back(E[y++]);
    for (int(i) = (0); ((i)) < ((K)); ++(i)) {
      printf("%d", (int)res[i].size());
      for (int(j) = (0); ((j)) < ((res[i].size())); ++(j))
        printf(" %d", res[i][j]);
      puts("");
    }
  }
  return 0;
}
