private static int pivot(int[] a, int low, int high) {
        int i1 = low, i2 = high - 1, i3 = (low + high) / 2;
        int a1 = a[i1], a2 = a[i2], a3 = a[i3];

        int n = (a1 > a2) ? a1 : a2;
        int m = (a2 > a3) ? a2 : a3;

        if (m > n) {
            return (a1 > a2) ? i1 : i2;
        } else if (n > m) {
            return (a2 > a3) ? i2 : i3;
        } else if (n == m) {
            return (a1 > a3) ? i1 : i3;
        }

        return -1;
    }