private static int[] merge(int[] a, int[] b) {
		int[] c = new int[a.length + b.length];
		int indexA = 0, indexB = 0;
		for (int indexC = 0; indexC < c.length; indexC++) {
			if (indexA < a.length && (indexB == b.length || a[indexA] <= b[indexB]))
				c[indexC] = a[indexA++];
			else if (indexB < b.length && (indexA == a.length || a[indexA] > b[indexB]))
				c[indexC] = b[indexB++];
		}
		return c;
	}