private static int trySwapTimes(int[] a, int times){
		if(times == 0) return maxSum(a);
		int max = Integer.MIN_VALUE;
		for(int i=0;i<allSwaps.size();i++){
			Point p = allSwaps.get(i);
			swap(a, p.x, p.y);
			allSwaps.remove(i);
			max = Math.max(max, trySwapTimes(a, times-1));
			allSwaps.add(i, p);
		}
		return max;
	}