#include <iostream>
#include <algorithm>
#include <iterator>
bool desc(const int& a, const int& b){return (a > b);}
bool pred(const int& a){ return ((a % 3) == 0); }
bool even(const int& n){return ((n % 2) == 0);}
int main(void){
int A[] = { 19, 9, 1, 7, 11, 3, 2, 21, 4, 6, 8, 12 };
int N = sizeof(A)/sizeof(A[0]);
int* mid = std::partition(A, A + N, pred);
std::sort(A, mid);
std::sort(mid, A + N, desc);
int* end = std::remove_if(A, A + N, even);
std::copy(A, end, std::ostream_iterator<int>(std::cout, " "));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+Cgpib29sIGRlc2MoY29uc3QgaW50JiBhLCBjb25zdCBpbnQmIGIpe3JldHVybiAoYSA+IGIpO30KYm9vbCBwcmVkKGNvbnN0IGludCYgYSl7IHJldHVybiAoKGEgJSAzKSA9PSAwKTsgfQpib29sIGV2ZW4oY29uc3QgaW50JiBuKXtyZXR1cm4gKChuICUgMikgPT0gMCk7fQoKaW50IG1haW4odm9pZCl7CglpbnQgQVtdID0geyAxOSwgOSwgMSwgNywgMTEsIDMsIDIsIDIxLCA0LCA2LCA4LCAxMiB9OwoJaW50IE4gICA9IHNpemVvZihBKS9zaXplb2YoQVswXSk7CgoJaW50KiBtaWQgPSBzdGQ6OnBhcnRpdGlvbihBLCBBICsgTiwgcHJlZCk7IAoJc3RkOjpzb3J0KEEsIG1pZCk7CglzdGQ6OnNvcnQobWlkLCBBICsgTiwgZGVzYyk7CgoJaW50KiBlbmQgPSBzdGQ6OnJlbW92ZV9pZihBLCBBICsgTiwgZXZlbik7CglzdGQ6OmNvcHkoQSwgZW5kLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8aW50PihzdGQ6OmNvdXQsICIgIikpOwoJcmV0dXJuIDA7Cn0=