ICFPC 2019 problem 150 solution