1 /*dfs+暴力检验
2 */
3 #include<iostream>
4 using namespace std;
5 #include<cstring>
6 #include<cstdio>
7 char ans[35];
8 int n,sum=0;
9 bool check(int l1,int r1,int l2,int r2)
10 {
11 while(l1<=r1&&l2<=r2)
12 {
13 if(ans[l1]!=ans[l2]) return false;
14 l1++;l2++;
15 }
16 return true;
17 }
18 void dfs(int k)
19 {
20 if(k==n+1)
21 {
22 sum++;
23 return;
24 }
25 for(int i=0;i<=1;++i)
26 {
27 ans[k]=i+‘0‘;
28 bool flag=true;
29 for(int j=1;j<=k/3;++j)
30 if(check(k-j+1,k,k-j-j+1,k-j)&&check(k-j+1,k,k-j-j-j+1,k-j-j))
31 {flag=false;
32 break;
33 }
34 if(flag)
35 {
36 dfs(k+1);
37 ans[k]=0;
38 }
39 else continue;
40 }
41 }
42 int main()
43 {
44 scanf("%d",&n);
45 if(n==0)
46 {
47 printf("0");
48 return 0;
49 }
50 dfs(1);
51 printf("%d\n",sum);
52 return 0;
53 }