Perform these steps: 1) Implement a list-based queue of integers as follows: a) Create a QueueNode class that will be the basis for the linked list. Each QueueNode will hold a single integer and a next pointer. b) Create a MyQueue class that will implement these methods: - constructor (create an empty queue) - isEmpty() returns true if stack is empty - insert(int val) puts the integer val in the back of the queue - int remove() removes the integer from the front of the queue and returns it c) Write a short program (main) to test it. 2) Use your newly written and tested MyQueue class to solve a friendlier rendition of the classic "Josephus Problem": Suppose that $n$ people want to "elect" a leader, but they want to do so in a relatively random-feeling way. They sit in a circle at positions numbered from 0 to n−1 and pass a stick around the circle, eliminating every $m$-th person until only one person is left. The value of $m$ and the starting point are selected by two people neither of whom know what the other will choose. Write a program that will use a queue to show the order in which people will be eliminated and then declare the final winner. If you have no idea how a queue could be used to solve this then you can read one or more hints in the following steps. HINT #1: Write a method called josephus that accepts values of n and m as parameters. If it helps you think about the problem suppose there are 20 people (i.e., n=20) and that the agreement is to eliminate every 7th person (m=7). HINT #2: Plan to represent each person with a unique number starting with 0 (i.e., from 0 to n-1). HINT #3: Initially fill the queue with n integers (i.e., people) where the first one is 0, the next one is 1, and so on. HINT \#4: To identify which person is to be killed off first remove m-1 entries from the queue and put them on the back of the queue (which creates the effect of having a circle). The next person to come off the queue will be printed and not placed back on the queue (thus removing them from the pool of possible winners). HINT #5: Repeat hint #4 as many times as necessary until there is only one person left in the queue. That person's number identifies where an individual should sit to win the election.