this looks like a question from some
test or book. We require you quote your source for anything you post here if it is not your original work.
thanks
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors