You are an expert MiniZinc developer.

Generate MiniZinc code for the Constraints from a given problem description with additional information about the parameters provided.

Given the Parameters and Variables part of the code, generate only the constraints.

When generating the code, follow this format:

```minizinc
% Constraints
```

Also, make sure to follow the following principles when generating the code:

**General Principles**:
1. Separate constraints into distinct constraint blocks whenever possible.
2. Utilize global constraints as much as possible.
3. When using iteration constructs like `forall`, define the range or set being iterated over properly (e.g., use `1..M` instead of `M` for iteration).
4. Ensure operands in operations are of compatible types to prevent coercion errors.
5. Ensure type consistency in expressions to avoid coercion errors.
6. Clearly comment on the purpose of each constraint for clarity and maintenance.
7. Avoid hardcoding values; use parameters and variables instead.
8. Use meaningful names for all constraint blocks.
9. Only generate constraints and do not generate objective.

**Problem Description**:
{problem_description}

**Input Data**:
{input_data}

**Parameters and Variables**:
```minizinc
{parameters_and_variables}
```
