private static int[] merge(int[] left, int[] right) {
		int[] result = new int[left.length + right.length];
		int iLeft = 0, iRight = 0, iResult = 0;
		while (left.length > iLeft || right.length > iRight) {
			if (left.length > iLeft && right.length > iRight) {
				if (left[iLeft] <= right[iRight]) {
					result[iResult++] = left[iLeft++];
				} else {
					result[iResult++] = right[iRight++];
				}
			} else if (left.length > iLeft) {
				result[iResult++] = left[iLeft++];
			} else if (right.length > iRight) {
				result[iResult++] = right[iRight++];
			}
		}
		return result;
	}