#include<bits/stdc++.h>

using namespace std;

struct Matrix
{
  vector< vector< long long > > a;

  Matrix(int N)
  {
    a.resize(N, vector< long long >(N));
  }

  Matrix operator+(const Matrix &kj)
  {
    Matrix ret(a.size());
    for(int i = 0; i < a.size(); i++) {
      for(int j = 0; j < a.size(); j++) {
        ret.a[i][j] = a[i][j] + kj.a[i][j];
      }
    }
    return (ret);
  }

  Matrix operator*(const Matrix &kj)
  {
    Matrix ret = Matrix::Zero(a.size());
    for(int i = 0; i < a.size(); i++) {
      for(int j = 0; j < a.size(); j++) {
        for(int k = 0; k < a.size(); k++) {
          ret.a[i][j] = (ret.a[i][j] + 1LL * a[i][k] * kj.a[k][j]);
        }
      }
    }
    return (ret);
  }

  Matrix operator^(long long n)
  {
    Matrix ret = Matrix::I(a.size());
    Matrix x = *this;
    while(n > 0) {
      if(n & 1) (ret = ret * x);
      x = x * x;
      n >>= 1;
    }
    return (ret);
  }

  static Matrix Zero(int N)
  {
    Matrix ret(N);
    for(int i = 0; i < N; i++) {
      for(int j = 0; j < N; j++) ret.a[i][j] = 0;
    }
    return (ret);
  }

  static Matrix I(int N)
  {
    Matrix ret(N);
    for(int i = 0; i < N; i++) {
      for(int j = 0; j < N; j++) ret.a[i][j] = i == j;
    }
    return (ret);
  }
};

int main()
{
  int n;
  while(cin >> n, n) {
    Matrix tt(3);
    tt.a = {{1, 1, 1},
            {1, 0, 0},
            {0, 1, 0}};
    tt = tt ^ n;
    cout << (tt.a[2][0] * 2 + tt.a[2][1] + tt.a[2][2] + 3649) / 3650 << endl;
  }
}