#!/usr/bin/env ruby def parse_tree(input, start) num_children = input[start] num_metadata = input[start + 1] next_index = start + 2 sums = 0 while num_children > 0 do sum, endindex = parse_tree(input, next_index) sums += sum next_index = endindex + 1 num_children -= 1 end metadata = 0 while num_metadata > 0 do metadata += input[next_index] next_index += 1 num_metadata -= 1 end return [ sums + metadata, next_index - 1] end input = gets.chomp.split.map(&:to_i) puts parse_tree(input, 0)[0]