@Busy = (* (a (* a)))
@Concat = (a (b (* (* ((a (b c)) c)))))
@Empty = (a (* (* a)))
@Free = (a (* (* a)))
@Node = (a (b (* (* ((a (b c)) c)))))
@Single = (a (* ((a b) (* b))))
@gen = (?((@gen__C0 @gen__C1) a) a)
@gen__C0 = a
& @Single ~ a
@gen__C1 = ({a d} ($([*2] {e $([+1] b)}) g))
& @Concat ~ (c (f g))
&! @gen ~ (a (b c))
&! @gen ~ (d (e f))
@main = a
& @sum ~ (@main__C1 a)
@main__C0 = a
& @gen ~ (16 (0 a))
@main__C1 = a
& @sort ~ (@main__C0 a)
@merge = ((@merge__C5 (@merge__C4 (@merge__C3 a))) a)
@merge__C0 = (b (e (a (d g))))
& @Node ~ (c (f g))
&! @merge ~ (a (b c))
&! @merge ~ (d (e f))
@merge__C1 = a
& @Node ~ a
@merge__C2 = a
& @Node ~ a
@merge__C3 = (a (b ((@merge__C1 ((* (* 0)) (@merge__C0 (a (b c))))) c)))
@merge__C4 = ((@Busy (@Busy ((* (* 0)) a))) a)
@merge__C5 = ((@Free (@Busy (@merge__C2 a))) a)
@radix = (?(((* (* (a a))) @radix__C0) b) b)
@radix__C0 = (a ({b $([&] $(d e))} ({$([*2] c) d} (f h))))
& @radix ~ (a (b (c (g h))))
& @swap ~ (e (f (@Free g)))
@sort = (a c)
& @to_arr ~ (b (0 c))
& @to_map ~ (a b)
@sum = ((0 ((a a) (@sum__C0 b))) b)
@sum__C0 = (a (b d))
&! @sum ~ (a $([+] $(c d)))
&! @sum ~ (b c)
@swap = (?((@swap__C0 @swap__C1) a) a)
@swap__C0 = a
& @Node ~ a
@swap__C1 = (* (b (a c)))
& @Node ~ (a (b c))
@to_arr = (((* @Empty) (@to_arr__C1 (@to_arr__C0 a))) a)
@to_arr__C0 = (a (d ({$([*2] $([+1] e)) $([*2] $([+0] b))} g)))
& @Concat ~ (c (f g))
&! @to_arr ~ (a (b c))
&! @to_arr ~ (d (e f))
@to_arr__C1 = a
& @Single ~ a
@to_map = ((@Free (@to_map__C1 (@to_map__C0 a))) a)
@to_map__C0 = (a (c e))
& @merge ~ (b (d e))
&! @to_map ~ (a b)
&! @to_map ~ (c d)
@to_map__C1 = (a b)
& @radix ~ (24 (a (1 (@Busy b))))