本题可以直接利用贡献法求解。一个n * n的矩阵可以分解为3个部分,以如下 4 * 4的矩阵为例:

    x y y x
    y z z y
    y z z y
    x y y x
  • x代表了四个角,每一个x的贡献为2次。
  • y是除了四个角的最外面元素,每一个y的贡献为3次。
  • 其余的就是z,贡献为4次。

题目要求最大的取值,那么我们不妨贪心的让x最小,y次之,z最大,这样就被分解为了3个等差数列,求解即可。

import sys
from math import inf

# 输入加速
input = sys.stdin.readline
"""
    n = 2 
        1 2
        3 4
    n = 3 
    1 5 2
    6 9 8
    3 7 4
    x y y x
    y z z y
    y z z y
    x y y x
    分为3类
    四个角肯定是最小的,每一个贡献两次
    除了四个角的边次小,每一个贡献3次
    其他的最大,贡献4次

"""
if __name__ == '__main__':
    n = int(input())
    MOD = 10 ** 9 + 7
    res = 0
    #从l到r的等差数列求和
    def cal(l: int,r: int) -> int:
        if l > r:
            return 0
        return (l + r) * (r - l + 1) // 2
    # x段的计算
    res += cal(1, 4) * 2 %  MOD
    res %= MOD
    # y段的计算
    y = n * n - (n - 2) * (n - 2) - 4
    res += cal(4 + 1,4 + y) * 3 % MOD
    res %= MOD
    # z段的计算
    res += cal(n * n - (n - 2) * (n - 2) + 1, n * n) * 4 % MOD
    res %= MOD
    print(res)