http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=714&page=show_problem&problem=841
#include <cmath>
#include <ctime>
#include <iostream>
#include <string>
#include <vector>
#include<cstdio>
#include<cstdlib>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<sstream>
#include<cstring>
#define For(i,n) for(int i=0;(i)<n;i++)
#define mp make_pair
#define pb push_back
#define MOD 10000007
using namespace std;
int main(){
int p[]={3,6};
int *t=p;
int x=*t++;
cout<<*t<<x;
long long int dp[101][4];
memset(dp,0,sizeof(dp));
dp[1][0]=1;dp[1][1]=1;
dp[2][0]=2;dp[2][1]=1;dp[2][2]=1;
For(i,101){
if(i<3)continue;
For(j,3){
dp[i][0]+=dp[i-1][j];
}
dp[i][1]=dp[i-1][0];
dp[i][2]=dp[i-1][1];
dp[i][3]=dp[i-1][2]+2*dp[i-1][3];
}
int n;
cin>>n;
while(n!=0){
cout<<dp[n][3]<<endl;
cin>>n;
}
}