fn main [ var lines := list_break_to_lines(read_lazy(h[0])); const width := len(lines[0]); var timelines := fill(0, width); timelines[list_search(lines[0], 'S')] := 1; for l in lines do [ var new_timelines := fill(0, width); for i := 0 to width do [ if l[i] = '^' then [ new_timelines[i - 1] += timelines[i]; new_timelines[i + 1] += timelines[i]; ] else [ new_timelines[i] += timelines[i]; ] ] timelines := new_timelines; ] var n_timelines := list_fold_monoid(timelines); write(h[1], ntos(n_timelines) + nl); ]