func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T, typename U>   inline void amin(T &x, U y) {     if (y < x) x = y;   }   template <typename T, typename U>   inline void amax(T &x, U y) {     if (x < y) x = y;   }   int main() {     int n, p, k, ai;     cin >> n >> k >> p;     vector<int> ods;     vector<int> evns;     for (int i = 0; i < n; i++) {       cin >> ai;       if (ai % 2 == 0)         evns.push_back(ai);       else         ods.push_back(ai);     }     int rem = k - p;     vector<vector<int> > ans;     for (int i = 0; i < p; i++) {       if (evns.size()) {         vector<int> tmp;         tmp.push_back(evns.back());         ans.push_back(tmp);         evns.pop_back();       } else if (ods.size() >= 2) {         vector<int> tmp;         tmp.push_back(ods.back());         ods.pop_back();         tmp.push_back(ods.back());         ods.pop_back();         ans.push_back(tmp);       } else {         cout <<  NO ;         return 0;       }     }     for (int i = 0; i < rem; i++) {       if (ods.size()) {         vector<int> tmp;         tmp.push_back(ods.back());         ans.push_back(tmp);         ods.pop_back();       } else {         cout <<  NO ;         return 0;       }     }     if (ods.size() % 2 == 1) {       cout <<  NO ;       return 0;     }     if (k == 1) {       cout <<  YES  << endl;       int m = ans[0].size() + ods.size() + evns.size();       cout << m <<    ;       for (int j = 0; j < ans[0].size(); j++) cout << ans[0][j] <<    ;       for (int j = 0; j < ods.size(); j++) cout << ods[j] <<    ;       for (int j = 0; j < evns.size(); j++) cout << evns[j] <<    ;       return 0;     }     cout <<  YES  << endl;     for (int i = 0; i < ans.size(); i++) {       if (ods.size()) {         int m = ans[i].size() + ods.size();         cout << m <<    ;         for (int j = 0; j < ans[i].size(); j++) cout << ans[i][j] <<    ;         for (int j = 0; j < ods.size(); j++) cout << ods[j] <<    ;         ods.clear();         cout << endl;       } else if (evns.size()) {         int m = ans[i].size() + evns.size();         cout << m <<    ;         for (int j = 0; j < ans[i].size(); j++) cout << ans[i][j] <<    ;         for (int j = 0; j < evns.size(); j++) cout << evns[j] <<    ;         evns.clear();         cout << endl;       } else {         cout << ans[i].size() <<    ;         for (int j = 0; j < ans[i].size(); j++) cout << ans[i][j] <<    ;         cout << endl;       }     }     return 0;   }   