### Question:
TreeWidthQueryOptimizer { public List<Integer> optimizeConstraints() { List<Integer> result = new ArrayList<>(); optimizeConstraints(result); return result; } TreeWidthQueryOptimizer(List<Constraint> fixedConstraints,
		List<Constraint> constraintsToOptimize, int numVariables); List<Integer> optimizeConstraints();  }### Answer:
@SuppressWarnings("static-method") @Test public void test1() { Constraint constraint1 = new Constraint(); constraint1.addVariable(0); constraint1.setMaximumProduct(10l); Constraint constraint2 = new Constraint(); constraint2.addVariable(0); constraint2.addVariable(1); constraint2.setMaximumProduct(15l); Constraint constraint3 = new Constraint(); constraint3.addVariable(1); constraint3.addVariable(2); constraint3.setMaximumProduct(7l); Constraint constraint4 = new Constraint(); constraint4.addVariable(2); constraint4.setMaximumProduct(2l); List<Constraint> constraints = new ArrayList<>(); constraints.add(constraint1); constraints.add(constraint2); constraints.add(constraint3); constraints.add(constraint4); TreeWidthQueryOptimizer optimizer = new TreeWidthQueryOptimizer(new ArrayList<Constraint>(), constraints, 3); checkOptimizerResult(new int[]{3,2,1,0}, optimizer.optimizeConstraints()); }