The wording of this problem makes it sound much more difficult than it actually is. You may need to read
the description several times in order to understand what it's getting at. Basically, you're asked to
solve for the value of X[n], where X[n] is based on the values of X[n-1], X[n-2], etc. The number of
previous elements that combine to create the value of X[n] is K, where K is the length of both the
coefficients and initial arrays.

Start by creating an array of ints, X[], to hold these values. Then we initialize X[] using the values
from initial[]. Note that we need to perform the mod operation as described int the problem statement
before inserting any value into X[]. Also note that if the number we're being asked to solve for (N) is less
than, or equal to, the length of the initial[] array (N <= K), then we already have our answer. We can
just return the the value in X[N].

Otherwise, we need to solve for each value of X[n] up to n = N. To get the next value we multiply each
value in X[] by it's corresponding value in coefficients[] and note their sum. Then we shift all elements
in X[] down by 1 (dropping off the value in X[0]) and insert our new value into the right-most position - after
running it through the mod operation.

Once n == N, we have solved for the number that was asked for. The value we need is the most recent
solution found which is stored in the greatest element of X.

The method myMod() simply implements the mod function as described in the problem statement. It is the normal
% function, modified to handle negative numbers.

Again, the toughest part of the problem is just reading through the problem statement making sense of it. I
actually thought this was harder than the 1000 point problem
Poetry.

Thank you for taking the time to read this solution. I welcome
any feedback you may have.