Write a C++ -program that will implement First-fit, Best-fit, Next-fit, and Worst-fit memory management algorithms. Your program must do the following: 1. Input the memory size and the number and sizes of all the partitions (limit the max number of the partitions to 5); 2. For each partition you may create a descriptor with at least the following information: Partition size; Partition number; - Partition status (Free/Busy); - Size of unused space ("Hole"); - Job name (Three characters. E.g. J01 or J15). 3. Input the job list that includes: - Job's name; - Job's size. 4. For each job you should create in your program a job descriptor that will include the job status (Run/Wait) and the partition number (if the job was allocated); 5. For each algorithm calculate initial memory allocation. Display the memory waste and the jobs that could not be allocated and have to wait.