System verilog constraint help

Help me understand this constraint:
constraint c_sum { array.sum() with (int’(item == 40)) > 1; }

My understanding: This line makes sure you have at least two items in your array with value == 40.

But when I tested this out this gives me exactly 2 item == 40 always .

what I wanted to do: To write a constraint for an array where my second maximum value is always == 40. I am able to achieve this int this way. I was able to generate random values for array with second max being 40. But I am always getting only 2 values to be equal to be 40.

If I change array.sum() with (int’(item == 40)) > 1; to >2; then I get 3 values, if I change to >3 then I get 4 values.

Help me understand the constraint.

/———————————-CODE————————————————————————————/

class ABC;
  rand int array [10];
  rand int max_value;
  int count;

  // making sure 40 is alteast is seen once
  constraint c_sum { array.sum() with (int'(item == 40)) > 1; }
  //making sure the max_vlaue is atleast seen once. makes 40 alsways second max
  constraint c_max_value { array.sum() with (int'(item == max_value))  > 1; }

  constraint c_max {max_value inside{[41:50]}; }
  constraint c_0 {foreach (array[i]) array[i] inside {[0:50]}; }

  function void post_randomize();
    count = 0;
	foreach (array[i]) begin
	  if(array[i] == 40)
	    count  = count + 1;  //. want to count how many values in my array after randomization are equal to 40
	  else if(array[i]>40)
	    array[i] = max_value;
	end
  endfunction
endclass

module tb;
  ABC abc;
  initial begin
    abc = new();
	repeat(50) begin
	  abc.randomize();
      $display ("array = %p", abc.array);
      abc.array.sort();
      $display ("array_sort = %p | Count = %0d",abc.array,abc.count);
      $display ("--------------------------------------------------------------------------");
	end
  end
endmodule

/—————————————————CODE—————————————————————/

I think that your limited solution space results in you seeing a bias towards only 2 elements being randomized to the same value of 40. If you increase the size of the array to a larger value (for example 100 elements), you will see results which have more than 2 values of 40.

Yes it worked when I increased array size to 100 Thank you.