# [J](https://www.jsoftware.com), 32 bytes

```
[:;(,/:,&(#\))&(<;.1~2~:/\'_'&,)
```

[Attempt This Online!](https://ato.pxeger.com/run?1=lVHNTsJAEI7XPsWgsdPGUtwWiSxyIjFpAh6MHIgYs63TUmlYIlsSeuDiY3jBgw-FT-PSQrhw8Us2m5nvZ2eyX9_vm-1lu8bZS6vG24jGuYsJdDkgOHANXJ-6C73H_v1PruL67RaeecdyGtwxrYuxbZvWXcdla2_NG2N8RdOxK93v2adtqK4LdW4YFE0kYCzlVSg-EBJAeQq4Fz7RQkEkFrQ4dB7SohAiy4gQlC6LIsvKnFQI3durhGCMhV7kv2k0aYcbjRZjpUuIMNoxJVG6tdzzmwfNccyTqGZX_9gj1u_kSz2Dnx5RRZxmdCACwN4-nC-losGqN9ltPksoiEcy76dTClSZMlyqQU9QEozylFRpn0taTbJsRrHsTwOs_mKzqe4_)

The 2nd part of this is the only interesting insight:

- `[:;...&(<;.1~2~:/\'_'&,)` This is the preprocessing step that breaks the lists down into the grouped sections.  A standard J idiom which is unfortunately a bit verbose in J.  I could save two bytes by using integers instead of strings as input.
- `,/:,&(#\)` The main logic.  Since we can't zip uneven lists in J using `,.`, we just cat the lists `,` and then sort them `/:` by `1..n` catted with `1..m` (where `n` and `m` are the two list lengths).  This works because sort is stable.