#include<cstdio>
#include<queue>
#include<utility>
#include<cstring>
#include<stack>
#include<algorithm>
#include<cmath>
#include<iostream>
#define MAX_N 100001
#define INF 2147483647
#define REP(i,n) for(int i=0;i<(int)(n);i++)

typedef long long int ll;
using namespace std;

long long int MOD = 1000000007;
long long int ruiseki[1000010];
void ncrset(){
  ruiseki[0] = 1;
  for(long long int i=1;i<1000010;i++){
    ruiseki[i] = (ruiseki[i-1] * i) % MOD;
  }
}

long long int powld(long long int x,long long int n){
  long long int ans = 1;
  while(n > 0){
    if((n&1) == 1){
      ans = (ans*x)  % MOD;
    }
    x = (x*x) % MOD;
    n >>= 1;
  }
  return ans % MOD;
}

ll ncrgyaku(ll n,ll r){
  long long int gyakuk,gyakur;
  long long int res = 1,x,y,z;
  y = powld(ruiseki[r],MOD-2);
  z = powld(ruiseki[n-r],MOD-2);
  return (((ruiseki[n]*y) % MOD)*z) % MOD;

}


int main()
{
  long long int  N,K,res=0;
  ncrset();
  cin >> N;
  res = 10;
  for(int i=2;i<=N;i++){
    res = (res+ncrgyaku(i+8,8))%MOD;
  }
  cout << res << endl;
  return 0;
}