#include <bits/stdc++.h>
using namespace std;
long long ABS(long long a) {
  if (a < 0) return (-a);
  return a;
}
void input() {}
int a[100005];
vector<int> even;
vector<int> odd;
vector<vector<int> > ans;
int main() {
  int n, k, p;
  scanf("%d", &n);
  scanf("%d", &k);
  scanf("%d", &p);
  for (int i = (0); i < (n); ++i) {
    scanf("%d", &a[i]);
    if (a[i] % 2 == 0) {
      even.push_back(a[i]);
    } else {
      odd.push_back(a[i]);
    }
  }
  int szEven = even.size();
  int szOdd = odd.size();
  int oddNeeded = k - p;
  int evenNeeded = p;
  if (oddNeeded > szOdd) {
    cout << "NO" << endl;
    return 0;
  } else {
    for (int i = (0); i < (oddNeeded); ++i) {
      vector<int> temp;
      temp.push_back(odd[odd.size() - 1]);
      odd.pop_back();
      ans.push_back(temp);
    }
  }
  szOdd = odd.size();
  if (evenNeeded > szEven) {
    if (evenNeeded - szEven > szOdd / 2) {
      cout << "NO" << endl;
      return 0;
    } else {
      for (int i = (0); i < (szEven); ++i) {
        vector<int> temp;
        temp.push_back(even[even.size() - 1]);
        even.pop_back();
        ans.push_back(temp);
      }
      int X = szOdd / 2;
      for (int i = (0); i < (evenNeeded - szEven); ++i) {
        vector<int> temp;
        temp.push_back(odd[odd.size() - 1]);
        temp.push_back(odd[odd.size() - 2]);
        odd.pop_back();
        odd.pop_back();
        ans.push_back(temp);
      }
    }
  } else {
    for (int i = (0); i < (evenNeeded); ++i) {
      vector<int> temp;
      temp.push_back(even[even.size() - 1]);
      even.pop_back();
      ans.push_back(temp);
    }
  }
  szEven = even.size();
  szOdd = odd.size();
  if (szEven > 0) {
    for (int i = (0); i < (szEven); ++i) {
      ans[k - 1].push_back(even[even.size() - 1]);
      even.pop_back();
    }
  }
  if (szOdd > 0) {
    if (szOdd % 2 == 0) {
      for (int i = (0); i < (szOdd); ++i) {
        ans[k - 1].push_back(odd[odd.size() - 1]);
        odd.pop_back();
      }
    } else {
      cout << "NO" << endl;
      return 0;
    }
  }
  cout << "YES" << endl;
  for (int i = (0); i < (k); ++i) {
    int sz = ans[i].size();
    cout << sz << " ";
    for (int j = (0); j < (sz); ++j) {
      cout << ans[i][j];
      if (j == sz - 1)
        cout << endl;
      else
        cout << " ";
    }
  }
  return 0;
}
