This was a challenge we were given in my CCNP class tonight. The instructor did not realize how complicated this actually is since he did not do it himself. Took me about 2 hours to solve it.