- #include <iostream> 
- #include <array> 
- #include <algorithm> 
- #include <functional> 
-   
- int main() 
- { 
-     std::array<int, 8> array = {{ 18 ,5 ,24 ,9 ,12 ,6 ,2, 3 }}; 
-   
-     std::cout << "Before first partitioning: "; 
-     for (auto const value : array) 
-         std::cout << value << ' '; 
-     std::cout << '\n'; 
-   
-     // First partition putting all odd number even divisable by three first 
-     auto second_start = std::partition(std::begin(array), std::end(array), [](int const& value) { 
-         return (value % 2 != 0 && value % 3 == 0); 
-     }); 
-   
-     std::cout << "Before second partitioning: "; 
-     for (auto const value : array) 
-         std::cout << value << ' '; 
-     std::cout << '\n'; 
-   
-     auto third_start = std::partition(second_start, std::end(array), [](int const& value) { 
-         return !(value % 2 == 0 && value % 3 == 0); 
-     }); 
-   
-     std::cout << "Before sorting: "; 
-     for (auto const value : array) 
-         std::cout << value << ' '; 
-     std::cout << '\n'; 
-   
-     std::sort(std::begin(array), second_start, std::less<int>()); 
-     std::sort(second_start, third_start, std::less<int>()); 
-     std::sort(third_start, std::end(array), std::greater<int>()); 
-   
-     std::cout << "After sorting: "; 
-     for (auto const value : array) 
-         std::cout << value << ' '; 
-     std::cout << '\n'; 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxmdW5jdGlvbmFsPgoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmFycmF5PGludCwgOD4gYXJyYXkgPSB7eyAxOCAsNSAsMjQgLDkgLDEyICw2ICwyLCAzIH19OwoKICAgIHN0ZDo6Y291dCA8PCAiQmVmb3JlIGZpcnN0IHBhcnRpdGlvbmluZzogIjsKICAgIGZvciAoYXV0byBjb25zdCB2YWx1ZSA6IGFycmF5KQogICAgICAgIHN0ZDo6Y291dCA8PCB2YWx1ZSA8PCAnICc7CiAgICBzdGQ6OmNvdXQgPDwgJ1xuJzsKCiAgICAvLyBGaXJzdCBwYXJ0aXRpb24gcHV0dGluZyBhbGwgb2RkIG51bWJlciBldmVuIGRpdmlzYWJsZSBieSB0aHJlZSBmaXJzdAogICAgYXV0byBzZWNvbmRfc3RhcnQgPSBzdGQ6OnBhcnRpdGlvbihzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJyYXkpLCBbXShpbnQgY29uc3QmIHZhbHVlKSB7CiAgICAgICAgcmV0dXJuICh2YWx1ZSAlIDIgIT0gMCAmJiB2YWx1ZSAlIDMgPT0gMCk7CiAgICB9KTsKCiAgICBzdGQ6OmNvdXQgPDwgIkJlZm9yZSBzZWNvbmQgcGFydGl0aW9uaW5nOiAiOwogICAgZm9yIChhdXRvIGNvbnN0IHZhbHVlIDogYXJyYXkpCiAgICAgICAgc3RkOjpjb3V0IDw8IHZhbHVlIDw8ICcgJzsKICAgIHN0ZDo6Y291dCA8PCAnXG4nOwoKICAgIGF1dG8gdGhpcmRfc3RhcnQgPSBzdGQ6OnBhcnRpdGlvbihzZWNvbmRfc3RhcnQsIHN0ZDo6ZW5kKGFycmF5KSwgW10oaW50IGNvbnN0JiB2YWx1ZSkgewogICAgICAgIHJldHVybiAhKHZhbHVlICUgMiA9PSAwICYmIHZhbHVlICUgMyA9PSAwKTsKICAgIH0pOwoKICAgIHN0ZDo6Y291dCA8PCAiQmVmb3JlIHNvcnRpbmc6ICI7CiAgICBmb3IgKGF1dG8gY29uc3QgdmFsdWUgOiBhcnJheSkKICAgICAgICBzdGQ6OmNvdXQgPDwgdmFsdWUgPDwgJyAnOwogICAgc3RkOjpjb3V0IDw8ICdcbic7CgogICAgc3RkOjpzb3J0KHN0ZDo6YmVnaW4oYXJyYXkpLCBzZWNvbmRfc3RhcnQsIHN0ZDo6bGVzczxpbnQ+KCkpOwogICAgc3RkOjpzb3J0KHNlY29uZF9zdGFydCwgdGhpcmRfc3RhcnQsIHN0ZDo6bGVzczxpbnQ+KCkpOwogICAgc3RkOjpzb3J0KHRoaXJkX3N0YXJ0LCBzdGQ6OmVuZChhcnJheSksIHN0ZDo6Z3JlYXRlcjxpbnQ+KCkpOwoKICAgIHN0ZDo6Y291dCA8PCAiQWZ0ZXIgc29ydGluZzogIjsKICAgIGZvciAoYXV0byBjb25zdCB2YWx1ZSA6IGFycmF5KQogICAgICAgIHN0ZDo6Y291dCA8PCB2YWx1ZSA8PCAnICc7CiAgICBzdGQ6OmNvdXQgPDwgJ1xuJzsKfQo=