Задачка перед сном, чтобы размять мозг.

Задана последовательность: Sn = T1 + T2 + T3 + … + Tn

Где:

n >= 1 && n <= 10^16

Tn = n^2 - (n - 1)^2



Нужно написать метод, который принимает на вход n (типа long) и возвращает посчитанное значение S (типа BigInteger, либо int, но тогда это должен быть остаток от деления на 10^9 + 7).

Метод должен отработать меньше чем за 1 сек.

Значиния n возьмите равными 10, 10^3, 10^6, 10^9 и 10^16



*поправил BigDecimal на BigInteger