//優化#pragma GCC optimize(2)//C#include<string.h>#include<stdio.h>#include<stdlib.h>#include<math.h>//C++#include<unordered_map>#include<algorithm>#include<iostream>#include<istream>#include<iomanip>#include<climits>#include<cstdio>#include<string>#include<vector>#include<cmath>#include<queue>#include<stack>#include<map>#include<set>//宏定義#define N 1010#define DoIdo main//#define scanf scanf_s#define it set<ll>::iterator#define TT template<class T>//定義+命名空間typedeflonglong ll;typedefunsignedlonglong ull;const ll mod =1e9+7;const ll INF =1e18;constint maxn =1e6+10;usingnamespace std;//全局變量//函數區
ll max(ll a, ll b){return a > b ? a : b;}
ll min(ll a, ll b){return a < b ? a : b;}
ll gcd(ll a, ll b){return!b ? a :gcd(b, a % b);}//主函數intDoIdo(){
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(NULL);
ll n;while(cin >> n){
ll a = n, b = n +1, c =2* n +1;
ll val =6, g =gcd(a, val);
a /= g, val /= g; g =gcd(b, val);
b /= g, val /= g; g =gcd(c, val);
c /= g, val /= g;
a %= mod, b %= mod, c %= mod;
cout <<(((a * b)% mod)* c)% mod << endl;}return0;}//分割線---------------------------------QWQ/*
*/