#include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) typedef long long ll; #define MIN(a, b) ((a)>(b)? (b): (a)) #define MAX(a, b) ((a)<(b)? (b): (a)) #define LINF 9223300000000000000 #define INF 2140000000 const long long MOD = 1000000007; //const long long MOD = 998244353; using namespace std; int main(int argc, char* argv[]) { ll n; scanf("%lld", &n); n-=4; ll ans=0; ll tmp=n/2+1; { ll num=tmp/3+1; ll tmp0=tmp%3+tmp; if(tmp0%2==0) tmp0/=2; else num/=2; ans = (ans + (num%MOD)*(tmp0%MOD)%MOD)%MOD; } if(n>=3) { tmp=(n-3)/2+1; { ll num=tmp/3+1; ll tmp0=tmp%3+tmp; if(tmp0%2==0) tmp0/=2; else num/=2; ans = (ans + (num%MOD)*(tmp0%MOD)%MOD)%MOD; } } printf("%lld\n", ans); return 0; }