public void merge(int[] A, int left, int mid, int right) {
		int[] left_arr = new int[mid - left + 1];
		int[] right_arr = new int[right - mid];
		for (int i = 0; i < mid - left + 1; i++) {
			left_arr[i] = A[left + i];
		}
		for (int i = 0; i < right - mid; i++) {
			right_arr[i] = A[i + mid + 1];
		}
		int left_index = 0, right_index = 0, index = left;
		while (left_index < left_arr.length && right_index < right_arr.length) {
			if (left_arr[left_index] < right_arr[right_index]) {
				A[index++] = left_arr[left_index++];
			} else {
				A[index++] = right_arr[right_index++];
			}
		}
		while (left_index < left_arr.length) {
			A[index++] = left_arr[left_index++];
		}
		while (right_index < right_arr.length) {
			A[index++] = right_arr[right_index++];
		}
	}