private int[] orderMerging(int[] a) {
        if(a.length == 1) return a;
        int leftLen = a.length / 2;
        int rightLen = a.length - leftLen;

        int[] left = new int[leftLen];
        int[] right = new int[rightLen];

        System.arraycopy(a, 0, left, 0, leftLen);
        System.arraycopy(a, leftLen, right, 0, rightLen);

        return merge(orderMerging(left), orderMerging(right));
    }