private static int partition(int[] arr, int left, int right) {
		int pivot = arr[left]; // any number
		while (left < right) {
			while (left < right && arr[right] > pivot) {
				right--;
			}
			if (left < right) {
				arr[left++] = arr[right];
			}
			while (left < right && arr[left] <= pivot) {
				left++;
			}
			if (left < right) {
				arr[right--] = arr[left];
			}
		}

		return left;
	}