#!/usr/bin/env python import sys def lr(tree): if (len(tree) < 3 or tree[0] == '.'): return [[],[]] if len(tree) == 3: return [["."],["."]] left=[] sm,ix = 0,1 while sm != -1: left.append(tree[ix]) sm+=(-1 if tree[ix] == '.' else 1) ix+=1 right = tree[len(left)+1:] return [left,right] def lrLongPath(tree): if tree[0] == '.': return [[],[]] if len(tree) == 3: return [[tree[0]],[tree[0]]] left,right = lr(tree) lLongPath = [tree[0]] + max(lrLongPath(left), key=len) rLongPath = [tree[0]] + max(lrLongPath(right), key=len) return [lLongPath,rLongPath] def biLongPath(tree): if len(tree) < 3 or tree[0] == '.': return [] if len(tree) == 3: return [tree[0]] lPath,rPath = lrLongPath(tree) path = list(reversed(lPath[1:])) + rPath left,right = lr(tree) return max([path]+list(map(biLongPath, [left,right])), key=len) print(" ".join(biLongPath(sys.argv[1:]))) """ run