+bool ascending_and_even(int a, int b) {
+ return (ascending(a, b) && (a % 2 == 0));
+}
+
+bool ascending_and_odd(int a, int b) {
+ return (ascending(a, b) && (a % 2 != 0));
+}
+
+static bool sort_first(int* array, unsigned length, criteria_cb criteria) {