#include <bits/stdc++.h>   using namespace std;   const int N = 1E5;   vector<int> vf, vz;   int main() {     ios_base::sync_with_stdio(false);     int n, k, p;     cin >> n >> k >> p;     for (int i = 0; i < n; i++) {       int x;       cin >> x;       if (x % 2 == 0)         vz.push_back(x);       else         vf.push_back(x);     }     int tf = vf.size(), tz = vz.size();     if (tf < (k - p) || p > tz + (tf - (k - p)) / 2 || (k - p) % 2 != tf % 2)       cout <<  NO ;     else {       if ((tf - (k - p)) % 2 == 1) {         cout <<  NO ;       }       if ((tf - (k - p)) % 2 == 0) {         cout <<  YES  << endl;         if (p == 0) {           for (int i = 0; i < k - 1; i++) cout <<  1   << vf[i] << endl;           cout << tf - (k - 1) + tz;           for (int i = k - 1; i < tf; i++) cout <<     << vf[i];           for (int i = 0; i < tz; i++) cout <<     << vz[i];           cout << endl;         } else if (tz >= p) {           for (int i = 0; i < p - 1; i++) cout <<  1   << vz[i] << endl;           cout << tz - p + 1 + tf - (k - p);           for (int i = p - 1; i < tz; i++) cout <<     << vz[i];           for (int i = 0; i < tf - (k - p); i++) cout <<     << vf[i];           cout << endl;           for (int i = tf - (k - p); i < tf; i++) cout <<  1   << vf[i] << endl;         } else {           for (int i = 0; i < tz; i++) cout <<  1   << vz[i] << endl;           for (int i = 0; i < (p - tz) - 1; i++)             cout <<  2   << vf[i * 2] <<     << vf[i * 2 + 1] << endl;           cout << tf - (p - tz - 1) * 2 - (k - p);           for (int i = (p - tz - 1) * 2; i < tf - (k - p); i++)             cout <<     << vf[i];           cout << endl;           for (int i = tf - (k - p); i < tf; i++) cout <<  1   << vf[i] << endl;         }       }     }   }   