#include <bits/stdc++.h>
using namespace std;
vector<int> v[2];
int n, p, k;
int main() {
  while (~scanf("%d%d%d", &n, &k, &p)) {
    v[0].clear();
    v[1].clear();
    int t;
    for (int i = 0; i < n; ++i) {
      scanf("%d", &t);
      v[t % 2].push_back(t);
    }
    if (v[1].size() < k - p) {
      puts("NO");
    } else {
      vector<vector<int> > ans(k);
      for (int i = 0; i < k - p; ++i) {
        int nw = v[1].back();
        ans[i].push_back(nw);
        v[1].pop_back();
      }
      if (v[1].size() % 2) {
        puts("NO");
      } else if (v[0].size() + (v[1].size() / 2) < p) {
        puts("NO");
      } else {
        for (int i = k - p; i < k; ++i) {
          if (!v[0].empty()) {
            ans[i].push_back(v[0].back());
            v[0].pop_back();
          } else {
            ans[i].push_back(v[1].back());
            v[1].pop_back();
            ans[i].push_back(v[1].back());
            v[1].pop_back();
          }
        }
        for (int i = 0; i < 2; ++i) {
          for (int j = 0; j < v[i].size(); ++j) {
            ans[0].push_back(v[i][j]);
          }
        }
        puts("YES");
        for (int i = 0; i < k; ++i) {
          printf("%d", ans[i].size());
          for (int j = 0; j < ans[i].size(); ++j) {
            printf(" %d", ans[i][j]);
          }
          puts("");
        }
      }
    }
  }
  return 0;
}
