Write a program that,
given three numbers *n*, *x* and *y*,
prints all the multisets
that can be made up with {1, …, *n*},
in such a way that every number appears between *x* and *y* times.

**Input**

Input consists of a natural number *n* > 0,
followed by a natural number *x* ≥ 0,
followed by a natural number *y* > *x*.

**Output**

Print all the multisets that can be made up with {1, …, *n*},
using each number between *x* and *y* times.
The numbers inside each multiset must appear in non-decreasing order.

You can print the solutions to this exercise in any order.

Public test cases

**Input**

2 1 4

**Output**

{1,2} {1,2,2} {1,2,2,2} {1,2,2,2,2} {1,1,2} {1,1,2,2} {1,1,2,2,2} {1,1,2,2,2,2} {1,1,1,2} {1,1,1,2,2} {1,1,1,2,2,2} {1,1,1,2,2,2,2} {1,1,1,1,2} {1,1,1,1,2,2} {1,1,1,1,2,2,2} {1,1,1,1,2,2,2,2}

Information

- Author
- Salvador Roura
- Language
- English
- Translator
- Salvador Roura
- Original language
- Catalan
- Other languages
- Catalan
- Official solutions
- C++
- User solutions
- C++