#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, k, p, x;
  cin >> n >> k >> p;
  std::vector<int> even, odd;
  for (int i = 0; i < n; ++i) {
    cin >> x;
    if (x % 2)
      odd.emplace_back(x);
    else
      even.emplace_back(x);
  }
  if (odd.size() < k - p || (odd.size() - k - p) % 2 != 0) {
    cout << "NO";
    return 0;
  }
  if ((even.size() + (odd.size() - (k - p)) / 2) < p) {
    cout << "NO" << '\n';
    return 0;
  }
  cout << "YES" << '\n';
  long long cnt = 0;
  if (k - p) {
    while (even.size() > 0 && cnt != p) {
      cout << 1 << " " << even.back() << '\n';
      even.pop_back();
      cnt++;
    }
    while (odd.size() > 0 && cnt != p) {
      cout << 2 << " " << odd.back() << " ";
      odd.pop_back();
      cout << odd.back() << '\n';
      odd.pop_back();
      cnt++;
    }
    for (int i = 0; i < k - p - 1; i++) {
      vector<int> ans;
      while (even.size() > 0) {
        ans.emplace_back(even.back());
        even.pop_back();
      }
      ans.emplace_back(odd.back());
      odd.pop_back();
      cout << ans.size() << " ";
      for (auto i : ans) {
        cout << i << " ";
      }
      cout << '\n';
    }
    vector<int> ans;
    while (odd.size() > 0) {
      ans.emplace_back(odd.back());
      odd.pop_back();
    }
    while (even.size() > 0) {
      ans.emplace_back(even.back());
      even.pop_back();
    }
    cout << ans.size() << " ";
    for (auto i : ans) {
      cout << i << " ";
    }
    cout << '\n';
  } else {
    vector<int> ans;
    for (int i = 0; i < p - 1; i++) {
      if (even.size() > 0) {
        cout << 1 << " " << even.back() << '\n';
        even.pop_back();
      } else {
        cout << 2 << " " << odd.back() << " ";
        odd.pop_back();
        cout << odd.back() << ' ';
        odd.pop_back();
      }
    }
    while (even.size() > 0) {
      ans.emplace_back(even.back());
      even.pop_back();
    }
    while (odd.size()) {
      ans.emplace_back(odd.back());
      odd.pop_back();
    }
    cout << ans.size() << " ";
    for (auto I : ans) {
      cout << I << " ";
    }
  }
}
