Hash Tables, in three parts. 1. Implement a hash table that stores the people database that we looked at on day 1. http://rabbit.eng.miami.edu/class/een318/people-1000.txt The data stored in the hash table should be structs holding all 9 items known for each person as separate ints and strings, not just one long string with containing the whole line. The hash calculation should be based on both first name and last name. Your inplementation should be in the form of a proper class with methods, as part of a testing program that allows you to verify that it is working perfectly. We should never see an underline in output, convert them to spaces. 2. Verify that your hash function is practically perfect by enhancing your implementation so that it counts the number of linked lists of each length, and compares those real results to the theoretical best case given to us by the Poisson distribution. 3. Veryify that your coding style was good by effortlessly modifying your program so that it now stores the information on all U.S. officially named places given in http://rabbit.eng.miami.edu/class/een318/a318a.txt This time, the hash value should be based on the Place Name, and the table's find method should return the list of all matches. All strings must be properly trimmed so they do not have spaces at the end. Turn in the three parts as separate files.