**Problem: **

There are `n`

people whose **IDs** go from `0`

to `n - 1`

and each person belongs **exactly** to one group. Given the array `groupSizes`

of length `n`

telling the group size each person belongs to, return the groups there are and the people’s **IDs** each group includes.

You can return any solution in any order and the same applies for IDs. Also, it is guaranteed that there exists at least one solution.

**Example:**

Input:groupSizes = [3,3,3,3,3,1,3]Output:[[5],[0,1,2],[3,4,6]]Explanation:Other possible solutions are [[2,1,6],[5],[0,4,3]] and [[5],[0,6,2],[4,3,1]].

**Constraints:**

`groupSizes.length == n`

`1 <= n <= 500`

`1 <= groupSizes[i] <= n`

## Solution:

from collections import defaultdict class Solution: def groupThePeople(groupSizes): count = defaultdict(list) for i, size in enumerate(groupSizes): count[size].append(i) result = [] for s, value in count.items(): for index in range(0, len(value), s): result.append(value[index:index + s]) return result groupSizes = [3,3,3,3,3,1,3] print(Solution.groupThePeople(groupSizes))