# [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.