I have all but one edge case, and it's a PAIN

Need to figure out how to not only limit the size of the group, but also
the amount of groups achieved, and then iterate over both of those.