static int move(int[] array, int i) {
		if (array.length <= 1) {
			return -1;
		}
		while (array[i - 1] == array[i]) {
			i--;
			if (i == 0) {
				return -1;
			}
		}
		if (i == array.length - 1) {
			swap(array, i, i - 1);
			i--;
			if (i == 0) {
				return -1;
			} else {
				return i;
			}
		}
		while (array[i - 1] >= array[i]) {
			i--;
			if (i == 0) {
				return -1;
			}
		}
		for (int j = array.length - 1; j > i; j--) {
			if (array[j] > array[i - 1]) {
				swap(array, j, i - 1);
				Arrays.sort(array, i, array.length);
				return array.length - 1;
			}
		}
		swap(array, i, i - 1);
		Arrays.sort(array, i, array.length);
		return array.length - 1;
	}