/*
hdu1297
ymc 2008/9/24

题目大意:

分析与解题思路
设:F(n)表示n个人的合法队列,则:
        按照最后一个人的性别分析,他要么是男,要么是女,所以可以分两大类讨论:
1、如果n个人的合法队列的最后一个人是男,则对前面n-1个人的队列没有任何限制,他只要站在最后即可,所以,这种情况一共有F(n-1);
2、如果n个人的合法队列的最后一个人是女,则要求队列的第n-1个人务必也是女生,这就是说,限定了最后两个人必须都是女生,这又可以分两种情况:
注意:大整数
*/
#include <iostream>
using namespace std;
const int N=1100;
const int M=500;
struct Big
{
    int s[M];
    int len;
};
Big f[N];
void Add(Big &a,Big &b,Big &c,Big &d)
{
    d.len=a.len;
    int t=0;
    for(int i=0;i<d.len;i++)
    {
        t+=a.s[i]+b.s[i]+c.s[i];
        d.s[i]=t%10;
        t=t/10;
    }
    if(t>0)
    {
        d.s[d.len]=t;
        d.len++;
    }
}
void OutPut(Big &a)
{
    for(int i=a.len-1;i>=0;i--)
        printf("%d",a.s[i]);
    printf("\n");
}
void Init()
{
    f[0].s[0]=1;f[0].len=1;
    f[1].s[0]=1;f[1].len=1;
    f[2].s[0]=2;f[2].len=1;
    f[3].s[0]=4;f[3].len=1;
    for(int i=4;i<N;i++)
    {
        Add(f[i-1],f[i-2],f[i-4],f[i]);
    }

}

int main()
{
    int n;
    Init();
    while(scanf("%d",&n))
    {
        OutPut(f[n]);
    }
}
ch3n2k.com | Copyright (c) 2004-2020 czk.