private String solveLuggageProblem(int[] weights){
		final String _TRUE = "YES";
		final String _FALSE = "NO";
		
		int totalWeight = getTotalWeight(weights);
		
		if (totalWeight%2 != 0)
			return _FALSE;
		
		int n = weights.length+1;
		int halfWeight = totalWeight/2;
		
		boolean [][] dpTable = new boolean [n][halfWeight+1];
		
		// Base case 1: weights = 0 for all n --> True 
		for(int i = 0;i<n;i++)
			dpTable[i][0] = true;
		
		// Base case 2: weights !=0 for all n=0 --> False  
		for(int i = 1;i<halfWeight+1;i++)
			dpTable[0][i] = false;
		
		for (int i = 1; i< n; i++ ){
			
			for (int j = 1; j< halfWeight+1; j++){
				
				int w_i = weights[i-1]; // weight of ith item
				
				if(j<w_i) // this item can't be included since its over the limit:j 
					dpTable[i][j] = dpTable[i-1][j];
				else 
					dpTable[i][j] = dpTable[i-1][j] || dpTable[i-1][j-w_i]; 
			}
		}
		
		return dpTable[n-1][halfWeight]==true?_TRUE:_FALSE;
		
	}