Function pointer prototype interpretation



Hi all,

I came accross this FP signature and it has me baffled.

Can anyone explain this signature to me - i.e what are the input and output types ?

void(*(*foo)(int))(int,void(*)(int))

Thanks

.