public void Partition(int[] a, int k, int begin, int end) {
		int left = begin;
		int right = end;
		int temp = a[left];
		while (left < right) {
			while (left < right && a[right] >= temp)
				right--;
			if (left < right)
				a[left] = a[right];
			while (left < right && a[left] < temp)
				left++;
			if (left < right)
				a[right] = a[left];
		}
		a[left] = temp;
		if (k < left)
			Partition(a, k, begin, left - 1);
		else if (k > left)
			Partition(a, k, left + 1, end);
	}