#!/usr/bin/env python get_idx = lambda s, c, dv=-1: s.index( c ) if c in s else dv def split_br( s ): i = get_idx( s, '(' ) j = get_idx( s, ')' ) if i < 0 or j < 0 or j < i: return s h = s[ : i ] t = s[ i + 1 : ] r = split_br( t ) if r == t: r = [ r ] t = r[ -1 ] i = get_idx( t, '(' ) j = get_idx( t, ')' ) if j < 0 or ( i >= 0 and i < j ): return s ( r[ -1 ], t ) = ( t[ : j ], t[ j + 1 : ] ) m = r r = split_br( t ) if r == t: r = [ r ] return [ h, m ] + r