human
I wrote the below code

    def combined_arg_fun(multi_arg, *args, **kwargs):
        extra_args_list = list(args)
        for (argnum_ix, arg_ix) in enumerate(argnums):
            extra_args_list[arg_ix] = multi_arg[argnum_ix]
        return fun(*extra_args_list, **kwargs)
    gradfun = value_and_grad(combined_arg_fun, argnum=0)
    def gradfun_rearranged(*args, **kwargs):
        multi_arg = make_tuple(*[args[i] for i in argnums])
        return gradfun(multi_arg, *args, **kwargs)
    return gradfun_rearranged

What's a good function header?
assistant
#Here's a good function header.

def value_and_multigrad(fun, argnums=[0]):