let rec happyday ?(day=0) ?(count=0) month last = if day > last then count else let digit1 = day mod 10 in let sum = (( day - digit1 ) / 10) + digit1 in if sum = month then happyday ~day:(day + 1) ~count:(count + 1) month last else happyday ~day:(day + 1) ~count:count month last let () = print_int ( happyday 1 31 + happyday 2 28 + happyday 3 31 + happyday 4 30 + happyday 5 31 + happyday 6 30 + happyday 7 31 + happyday 8 31 + happyday 9 30 + happyday 10 31 + happyday 11 30 + happyday 12 31 ); print_newline ()