#include <iostream>
#include <algorithm>
#include <iterator>
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, [](const int& n) {
return ((n % 3) == 0); }
);
std::sort(A, mid);
std::sort(mid, A + N, [] (const int& a, const int& b) {
return (a > b);
});
int* end = std::remove_if(A, A + N, [](const int& n) {
return ((n % 2) == 0);
} );
std::copy(A, end, std::ostream_iterator<int>(std::cout, " "));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+CgoKaW50IG1haW4odm9pZCl7CglpbnQgQVtdID0geyAxOSwgOSwgMSwgNywgMTEsIDMsIDIsIDIxLCA0LCA2LCA4LCAxMiB9OwoJaW50IE4gICA9IHNpemVvZihBKS9zaXplb2YoQVswXSk7CgoJaW50KiBtaWQgPSBzdGQ6OnBhcnRpdGlvbihBLCBBICsgTiwgW10oY29uc3QgaW50JiBuKSB7IAoJCXJldHVybiAoKG4gJSAzKSA9PSAwKTsgfQoJKTsgCglzdGQ6OnNvcnQoQSwgbWlkKTsKCQoJc3RkOjpzb3J0KG1pZCwgQSArIE4sIFtdIChjb25zdCBpbnQmIGEsIGNvbnN0IGludCYgYikgewoJCXJldHVybiAoYSA+IGIpOwoJfSk7CgoJaW50KiBlbmQgPSBzdGQ6OnJlbW92ZV9pZihBLCBBICsgTiwgW10oY29uc3QgaW50JiBuKSB7CgkJcmV0dXJuICgobiAlIDIpID09IDApOwoJfSApOwoJCglzdGQ6OmNvcHkoQSwgZW5kLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8aW50PihzdGQ6OmNvdXQsICIgIikpOwoJcmV0dXJuIDA7Cn0=