private static int distributeShrink(int amt, int[] values, int[] min) {
		int orig[] = new int[values.length];
		System.arraycopy(values, 0, orig, 0, values.length);
		int max[] = new int[min.length];
		for (int i = 0; i < min.length; i++) {
			max[i] = values[i] * 2 - min[i];
		}
		amt = distributeGrow(amt, values, max);
		for (int i = 0; i < values.length; i++) {
			values[i] = orig[i] * 2 - values[i];
		}
		return -amt;
	}