macro_rules! split {
($($i:ident),*;
$($ls:literal),*; $r:literal $(,$rs:literal)*; $o1:literal, $o2:literal $(,$os:literal)*;
$($rr:literal),*;
$($c:literal),*; $($or:literal),*;;) => { ... };
($($i:ident),*;
$($ls:literal),*;; $o1:literal, $o2:literal $(,$os:literal)*;
$($rr:literal),*;
$($c:literal),*; $($or:literal),*;;) => { ... };
($($i:ident),*;
$($ls:literal),*; $r:literal $(,$rs:literal)*;;
$($rr:literal),*;
$c1:literal $(,$c:literal)*; $or1:literal $(,$or:literal)*; $($ol:literal),*;) => { ... };
($($i:ident),*;
$($ls:literal),*;;;
$($rr:literal),*;
$c1:literal $(,$c:literal)*; $or1:literal $(,$or:literal)*; $($ol:literal),*;) => { ... };
($($i:ident),*;
$($ls:literal),*; $r:literal $(,$rs:literal)*;;
$($rr:literal),*;
; $or1:literal $(,$or:literal)*; $($ol:literal),*; $($orr:literal),*) => { ... };
($($i:ident),*;
$($ls:literal),*;;;
$($rr:literal),*;
; $or1:literal $(,$or:literal)*; $($ol:literal),*; $($orr:literal),*) => { ... };
($($i:ident),*;
$($ls:literal),*; $r:literal $(,$rs:literal)*;;
$($rr:literal),*;
;; $($ol:literal),*; $($orr:literal),*) => { ... };
($($i:ident),*;
$($ls:literal),*;;;
$($rr:literal),*;
;; $($ol:literal),*; $($orr:literal),*) => { ... };
(~ $($i:ident),*;
$l1:literal $(,$l:literal)*;
$r1:literal $(,$r:literal)*;
$ol1:literal $(,$ol:literal)*;
$or1:literal $(,$or:literal)*;
$($ld:literal),*; $($rd:literal),*;) => { ... };
(~ $($i:ident),*;
$l1:literal $(,$l:literal)*;
$r1:literal $(,$r:literal),*;
;;
$($ld:literal),*; $($rd:literal),*;
$($sd:literal),*) => { ... };
(~ $($i:ident),*;
;;
;;
$($ld:literal),*; $($rd:literal),*;
$($sd:literal),*) => { ... };
}