This assignment will use some of the programming features you have learned so far, so plan ahead, map out code on paper first and then get started. Remember to compile often to get rid of any bugs or compilation errors. A good rule of thumb is to compile after writing 10 lines of code or completing something significant (like finishing a function or class). In this extra credit assignment, you will be computing the result of paying off a mortgage over many years. You may assume that this program will never require more than one million years to pay off the mortgage. Input Function: The first step is to get the required information from the user of the program. Information that is required is original principle, the monthly payment amount and the monthly interest rate (note that a monthly interest rate is not typically reported but rather APR is more common). As the heading implies, put the prompts and information retrieval inside an input function for this information. The second step is to open an output file. This file will contain a list of the valid balances after the payment is made every month. Use this output file to output the results after each month to a file called ammort.txt. Each month, the principle is updated as follows: The New principle is the old principle plus the old principle times interest rate minus the monthly payment. If this value goes below 0 then the loop is complete and the balance is paid. You should take time to understand this in the sample below. Original balance: $10. Monthly Interest Rate: 0.10 Monthly Payment: $5 Month 1: New Principle is $10 + ($10 * 0.1) - $5 = 10 + 1 - 5 = $6 Month 2: New Principle is $6 + ($6 * 0.1) - $5 = 6 + 0.6 - 5 = $1.6 Month 3: New Principle is $1.6 + ($1.6 * 0.1) - $5 = 1.6 + 0.16 - 5 < 0 and thus: New Principle is 0! So given these three pieces of information, you can determine how long it would take to pay off a loan with a given rate. The new principle for each month should be output to the text file. This will require you to write a loop that continues while the principle is larger than zero or until perhaps it becomes 0 depending on how you implement the logic. Lastly, the console output to the final program should be bare. For the console output, simple output how many months would be required to pay off this debt. You should figure out a way to determine if there will never be enough months as well. For example, imagine a rate of 1.00 on $10 with a $5 payment. After the first month you would get $10 + 1.00 * $10 - $5 = $15. Consider how much more than the original principle is paid due to the interest being charged. In the example above, the debt was $10. However, the final amount paid was $11.76. If you extend this to some plans that will pay out for more years rather than just months, this number can become quite astonishing. Try some toy examples. Perhaps ask someone you know what their interest rate is on their mortgage loan for their house (if they give oyu APR, just divide it by 12 and don't think about the math too much at this time). As a sample, try something like, $100,000, with a rate of 0.01 and a payment of $1200. Is it surprising how many months/years it takes to pay off this debt?