Problem:
Problem C: Finding the Largest Carbon Compound Given Its Longest Chain

An bydrocarbon is an organic compound which contains only carbons and hydrogens. An isomer is a compound that has the same number of carbons but different structures. Heptane, for example, is a hydrocarbon with 7 carbons. It has nine isomers. The structural formula of three are shown in Figure 1. Carbons are represented by the letter C, and bonds between carbons are represented by a straight line. In all figures, hydrogens are not represented for simplicity. Each carbon can be connected to a maximum of 4 carbons.

Figure 1: These three examples of isomers of heptane have the same number of carbons but different structures.

Let define a chain in an isomer as a sequence of connected carbons without branches. An isomer can have many chains of the same length. Figure 2 shows the longest chain of carbons for each of the represented isomer. Note that there can be many instances of longest chain in an isomer.

Figure 2: The figures shows one instance of longest chain of carbons in each isomer. The first and the second isomers show longest chains of 5 carbons. The longest chain in the third isomer has 4 carbons.

Your task is to identify the number of carbons of the largest possible carbon compound whose longest carbon chain has n (1 ≤ n ≤ 30) carbons.

Input

Each input contains a list of number of carbons, i.e. the length of a carbon chain.

The number of input lines is less than or equal to 30.

Output

For each number n in input, identify the number of carbons of the largest possible carbon compound whose longest carbon chain has n carbons.

Sample Input

1
4

Output for the Sample Input

1
8

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



namespace Test1 {

    class ClassMain {



        
        public static void Main(String[] args) {
            string line;
            while ((line = Console.ReadLine()) != null) {
                int n = int.Parse(line);
                //if (n == 0) { break; }
                if (n == 0) { Console.WriteLine(0); continue; }
                if (n == 1) { Console.WriteLine(1); continue; }
                if (n == 2) { Console.WriteLine(2); continue; }
                if (n == 3) { Console.WriteLine(5); continue; }

                int node = 0; int edge = 0;
                if (n % 2 == 0) {
                    // e.g. n==4,
                    //
                    //    O  -  O
                    //  / ||  / ||
                    // O  OO O  OO   <- Tree Depth = n/2 -1
                    node = 2; edge = 6;
                    for (int i = 0; i < n / 2 - 1; i++) {
                        node += edge;
                        edge *= 3;
                    }
                }
                else {
                    //e.g. n ==5,
                    //
                    //      O
                    //    / || |
                    //   O  OO O
                    //  /||  
                    // O OO ...     <- Tree Depth = (n-1)/2
                    node = 1; edge = 4;
                    for (int i = 0; i < (n - 1) / 2; i++) {
                        node += edge;
                        edge *= 3;
                    }
                }
                
                Console.WriteLine(node);

    
            }
        }


    }

    
}