calculateNMCValues() has been completely changed so that a sorted arrayList is used instead of the old complicated method that is no longer necessary due to changes in the NMC logic.