#define rep(i, n) for(int i = 0; i < (int)n; i++)
#include <bits/stdc++.h>
using namespace std;

typedef long long ll; // long longはデータモデル(LLP64, LP64, ...)によらず64bit.
ll gcd(ll a, ll b) {return b ? gcd(b, a%b) : a;}  // ユークリッドの互除法（aが長辺）
ll lcm(ll a, ll b) {return a/gcd(a,b)*b;}          // オーバーフローしないように先に割る

const ll INF = LLONG_MAX;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

int main()
{
#ifdef LOCAL
    // 以降 cin の入力元が 'xxx.txt' になる
    std::ifstream in("kannondou.txt");
    std::cin.rdbuf(in.rdbuf());
#endif

    int n = 30;
    vector<ll> h(n);
    rep(i,n)
    {
        cin >> h[i];
        if (h[i] == 0) break;
    }

    vector<ll> dp(n);

    for (ll elem : h)
    {
        if (elem == 0) break;
        rep(i,n)
        {
            dp[i] = -INF;
        }
        //cout << elem << endl;

        dp[0] = 1;
        for(int i = 1; i < elem; i++)
        {
            if (i == 1) {dp[i] = 2; continue;};
            if (i == 2) {dp[i] = 4; continue;};
            chmax(dp[i], dp[i-1] + dp[i-2] + dp[i-3]);
        }

        //cout << dp[elem-1] << endl;
        cout << dp[elem-1] / 10 / 365 + 1 << endl;
    }
    return 0;
}

/*
  - 最大値
    - long long : LLONG_MAX, LLONG_MIN, ULLONG_MAX(unsigned long long max)
  - vector
    vector<int> A(N);
    - loop
      for  (int i = 0; i < A.size(); i++) {}
      for  (int elem : A) {}
    - sort
      std::sort(v.begin(), v.end());  // 昇順
      std::sort(v.begin(), v.end(), std::greater<int>()); //降順
  - pair
    - pairのソートの定義 : firstが優先的に比較。同じだったらsecond。
  - map
    - for (auto x : map) {}  // x.first:key  x.second:value.
  - string
    - loop
      for (char& c : s) {}
 */


