let main l upls = let rec calc ls ?(i=0) presum = match ls with [] -> i | hd :: tl -> let sum = presum + hd in if sum > l then i else calc tl sum ~i:i+1 in calc upls 0 let split s c = let len = String.length s in let rec iter pos to_rev = if pos = len then List.rev ("" :: to_rev) else match try Some ( String.index_from s pos c ) with Not_found -> None with Some pos2 -> if pos2 = pos then iter (pos+1) ("" :: to_rev) else iter (pos2+1) ((String.sub s pos (pos2-pos)) :: to_rev) | None -> List.rev ( String.sub s pos (len-pos) :: to_rev ) in iter 0 [] let () = let main1 = main @@ int_of_string @@ read_line () in ignore @@ read_line (); let upls = List.fast_sort compare @@ (List.map int_of_string @@ split (read_line ()) ' ') in print_int @@ main1 upls; print_endline "\n"