fun countHappyDay (month, days) = let fun isHappyDay d = month = (d mod 10) + (d div 10) fun loop d = if days < d then 0 else if isHappyDay d then 1 + loop (d + 1) else loop (d + 1) in loop 1 end val () = let val ans = foldl (fn ((m, d), acc) => countHappyDay (m, d) + acc) 0 [(1, 31), (2, 28), (3, 31), (4, 30), (5, 31), (6, 30), (7, 31), (8, 31), (9, 30), (10, 31), (11, 30), (12, 31)] in print (Int.toString ans) end