#include<bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define endl "\n"
#define NAME "a"
const int MAXN = 1e6 + 5;
const int inf = 1e18;
const int MOD = 1e9 + 7;
void FileInput(){
if(fopen(NAME".inp" , "r") == NULL)
freopen(NAME".inp" , "w" , stdout);
freopen(NAME".inp" , "r" , stdin);
freopen(NAME".out" , "w" , stdout);
}
int n;
int f[MAXN];
void solve(){
cin >> n;
f[1] = 1;
f[2] = 2;
f[3] = 4;
for(int i = 4 ; i <= n ; i++){
f[i] = (f[i - 1] + f[i - 2] + f[i - 3]) % MOD;
}
cout << f[n] << endl;
}
int32_t main(){
//FileInput();
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t = 1;
// cin >> t;
while(t--)
solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBkb3VibGUgbG9uZyBkb3VibGUKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBOQU1FICJhIgoKY29uc3QgaW50IE1BWE4gPSAxZTYgKyA1Owpjb25zdCBpbnQgaW5mID0gMWUxODsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7Cgp2b2lkIEZpbGVJbnB1dCgpewogICAgaWYoZm9wZW4oTkFNRSIuaW5wIiAsICJyIikgPT0gTlVMTCkKICAgICAgICBmcmVvcGVuKE5BTUUiLmlucCIgLCAidyIgLCBzdGRvdXQpOwogICAgZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwogICAgZnJlb3BlbihOQU1FIi5vdXQiICwgInciICwgc3Rkb3V0KTsKfQoKaW50IG47CmludCBmW01BWE5dOwoKdm9pZCBzb2x2ZSgpewogICAgY2luID4+IG47CiAgICBmWzFdID0gMTsKICAgIGZbMl0gPSAyOwogICAgZlszXSA9IDQ7CiAgICBmb3IoaW50IGkgPSA0IDsgaSA8PSBuIDsgaSsrKXsKICAgICAgICBmW2ldID0gKGZbaSAtIDFdICsgZltpIC0gMl0gKyBmW2kgLSAzXSkgJSBNT0Q7CiAgICB9ICAgCgogICAgY291dCA8PCBmW25dIDw8IGVuZGw7Cn0KCmludDMyX3QgbWFpbigpewogICAgLy9GaWxlSW5wdXQoKTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKQogICAgICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQ==