There are n people that are split into some unknown number of groups. Each person is labeled with a unique ID from 0 to n - 1.
You are given an integer array groupSizes, where groupSizes[i] is the size of the group that person i is in. For example, if groupSizes[1] = 3, then person 1 must be in a group of size 3.
Return a list of groups such that each person i is in a group of size groupSizes[i].
Each person should appear in exactly one group, and every person must be in a group. If there are multiple answers, return any of them. It is guaranteed that there will be at least one valid solution for the given input.

-30.jpg)
"""
1282. Group the People Given the Group Size They Belong To
There are n people that are split into some unknown number of groups.
Each person is labeled with a unique ID from 0 to n - 1.
You are given an integer array groupSizes,
where groupSizes[i] is the size of the group that person i is in.
For example, if groupSizes[1] = 3, then person 1 must be in a group of size 3.
Return a list of groups such that each person i is in a group of size groupSizes[i].
Each person should appear in exactly one group, and every person must be in a group.
If there are multiple answers, return any of them.
It is guaranteed that there will be at least one valid solution for the given input.
Input: groupSizes = [3,3,3,3,3,1,3]
Output: [[5],[0,1,2],[3,4,6]]
"""
groupSizes = [2,1,3,3,3,2] # 333, 333, 1 -> [[0, 1, 2], [3, 4, 6], [5]]
groups = []
i_g = 0 # which index is it in groups list
while max(groupSizes) != 0:
i = 0
groups.append([]) # next group
smallest = 100 # big number
while i < len(groupSizes): # find the smallest
if smallest > groupSizes[i] and groupSizes[i] > 0:
smallest = groupSizes[i]
i += 1
count = 0
i = 0
while count != smallest: # find the exact index and put into the answer list
if groupSizes[i] == smallest:
groups[i_g].append(i)
groupSizes[i] = 0 # replace with 0 to not confused with the smallest number
count += 1
i += 1
i_g += 1
print(groups)
