#include <stdio.h>
#include <vector>
using namespace std;
vector< int> vec[100005];
int even[100005] = {0};
int odd[100005] = {0};
int num[100005];
int main()
{
int n,k,p,t,i,j;
int count1 = 0;
int count2 = 0;
//long long int sum = 0;
scanf("%d %d %d",&n, &k, &p);
for( i = 0; i<n; i++)
{
scanf("%d",&num[i]);
if(num[i]%2 == 0)
even[count1++] = num[i];
else
odd[count2++] = num[i];
// sum+=num[i];
}
int co = 0;
int ce = 0;
if(count2>=(k-p) && (count2-(k-p))%2==0 && (count2-k+p)/2+count1>=p)
{ printf("YES\n");
for( i = 0; i<p ; i++)
{
if(co < count1)
vec[i].push_back(even[co++]);
else
{
vec[i].push_back(odd[ce++]);
vec[i].push_back(odd[ce++]);
}
}
while(co < count1)
vec[0].push_back(even[co++]);
for( ; i < k && ce<count2 ; i++)
{
vec[i].push_back(odd[ce++]);
}
while( ce < count2)
vec[0].push_back(odd[ce++]);
//cout<<co<<count1<<endl;
//cout<<j<<count2<<endl;
for( i = 0; i < k && vec[i].size() != 0; i++)
{
printf("%d ",vec[i].size());
for( j = 0; j< vec[i].size() && vec[i][j] != 0; j++)
{
printf("%d%c",vec[i][j],( j == vec[i].size() - 1 ? '\n':' '));
}
}
}
else
printf("NO\n");
}