#include <bits/stdc++.h>
using namespace std;
template <typename... T>
void rd(T &...args) {
  ((cin >> args), ...);
}
template <typename... T>
void pp(T... args) {
  ((cout << args << " "), ...);
  cout << "\n";
}
void add(long long &x, long long y) {
  x += y;
  if (x >= 1000000007) x %= 1000000007;
  if (x < 0) x = x % 1000000007 + 1000000007;
}
void solve() {
  long long n, k, p;
  rd(n, k, p);
  long long e = p, o = k - p, oc = 0, ec = 0;
  vector<vector<long long> > odds, evens;
  for (int i = (int)(1); i <= (int)(n); i++) {
    long long x;
    rd(x);
    if (x & 1) {
      oc++;
      vector<long long> temp = {x};
      odds.push_back(temp);
    } else {
      ec++;
      vector<long long> temp = {x};
      evens.push_back(temp);
    }
  }
  bool ans = 0;
  if (o <= oc and (oc - o) % 2 == 0) {
    long long d = oc - o;
    if (e != 0) {
      while (d) {
        vector<long long> t1 = odds.back();
        odds.pop_back();
        vector<long long> t2 = odds.back();
        odds.pop_back();
        vector<long long> te = {t1.front(), t2.front()};
        evens.push_back(te);
        ec++;
        oc -= 2;
        d -= 2;
      }
    } else {
      long long N = odds.size();
      for (int i = (int)(o); i <= (int)(N - 1); i++) {
        for (long long x : odds[i]) {
          odds[0].push_back(x);
        }
      }
      oc = o;
      for (auto v : evens) {
        for (int x : v) odds[0].push_back(x);
      }
      ec = 0;
    }
    if (e <= ec and (e != 0 or e == 0 and ec == 0)) {
      if ((e == 0 and ec == 0) or (e == ec))
        ans = 1;
      else {
        ans = 1;
        long long N = evens.size();
        for (int j = (int)(e); j <= (int)(N - 1); j++) {
          for (long long x : evens[j]) evens[0].push_back(x);
        }
      }
    }
  }
  if (!ans) {
    pp("NO");
  } else {
    pp("YES");
    for (int i = (int)(0); i <= (int)(o - 1); i++) {
      cout << odds[i].size() << ' ';
      for (long long x : odds[i]) cout << x << ' ';
      cout << "\n";
    }
    for (int i = (int)(0); i <= (int)(e - 1); i++) {
      cout << evens[i].size() << ' ';
      for (long long x : evens[i]) cout << x << ' ';
      cout << "\n";
    }
  }
}
void prep() {}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cout << fixed << setprecision(12);
  prep();
  int t = 1;
  while (t--) solve();
  cout << "\n";
  return 0;
}
