#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_set>
#include <string>

using namespace std;

int main()
{
	int n;
	cin >> n;
	if (n & 1) cout << 0;
	else cout << (1 << (n >> 1));
	/*system("pause");*/
	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{
   long long int n;
   cin>>n;
   if(n%2==1)
        cout<<0<<"\n";
   else
        cout<<(1 << (n>>1));
}

#pragma comment(linker, "/STACK:268435456")
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <deque>
#include <queue>
#include <stack>
#include <algorithm>
#include <functional>
#include <unordered_map>
#include <unordered_set>
#include <string>
#include <cmath>
using namespace std;

signed main()
{
	int n;
	cin >> n;
	if (n < 2)
	{
		cout << 0;
		return 0;
	}
	if (n % 2 != 0)
	{
		cout << 0;
		return 0;
	}
	long long ans = 1;
	for (int i = 1; i <= n/2; ++i)
	{
		ans = ans * 2;
	}
	cout << ans;
	return 0;
}

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <math.h>
using namespace std;

int main()
{
	int n;
	long long answer;
	cin >> n;
	if (n % 2 != 0)
	{
		cout << 0;
		exit(0);
	}
	else answer = pow(2, n / 2);
		cout << answer;
	return 0;
}

/*
Bismillah_hir_rahmanir_rahim

*/
#include<bits/stdc++.h>
using namespace std;

#define ll long long int
#define bug cout<<"--------------------"<<endl

int main()
{

    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n ;
    cin >> n ;

    if(n==2)
        cout <<"2"<<endl;
    else if(n%2==0)
    {
        int res = 1 ;
        while(n>0)
        {
            res*=2;
            n-=2;
        }
        cout << res<<endl;
    }
    else
        cout <<"0"<<endl;

    return 0;
}

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

using type = int;
using line = vector <type>;

const type INF = 0x3f3f3f3f;

int main() {
	// ...
	ios::sync_with_stdio(false);
	//freopen("input.txt", "rt", stdin);
	long long n;
	cin >> n;

	cout << (n % 2 ? 0 : 2 << (n/2)-1);

	return 0;
}

#include <bits/stdc++.h>
#define ll long long
using namespace std;

void win() {
    ll n , x , y;
    cin >> n;
    if(n == 2)
    {
    	cout << 2;
    	return;
	}
    x = pow(4 , n/4);
    y = pow(2 , n/2 );
    if(n % 2 == 0)
       {
       	   if(n % 4 == 0) cout << x;
       	   else cout << y;
	   }

    else cout << 0;

}
int main()
{
     int m = 1   ;

	while(m--)
	{
		win();
	}

}

#include<iostream>
#include<algorithm>
#include<limits.h>
#include<string>
#include<cmath>
#include<vector>
#include<bitset>
#include<map>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<fstream>
#include<random>
#define fr(i,x,y) for(int i=x;i<y;i++)
#define rfr(i,x,y) for(int i=x;i>=y;i--)
#define int long long
#define main signed main
#define all(x) x.begin(),x.end()
	//#define DEBUG
	using namespace std;
template<class T1, class T2>
struct tree {
	T1 key;
	T2 element;
	int priority = -1;
	tree<T1, T2>* right = nullptr;
	tree<T1, T2>* left = nullptr;
	tree<T1, T2>& operator =(tree<T1, T2> x)
	{
		this->element = x.element;
		this->key = x.key;
		this->left = x.left;
		this->priority = x.priority;
		this->right = x.right;
		return x;
	}
};/*
template<class T1, class T2>
void operator = (pair < tree<T1, T2>, tree<T1, T2> >& a, const pair < tree<T1, T2>, tree<T1, T2> >& b)
{

}*/
#ifdef DEBUG
ofstream Log;
#endif
template<class T1, class T2>
class dekart_tree {
private:
	tree<T1, T2>* first = nullptr;
	tree<T1, T2>* merch(tree<T1, T2>* first1, tree<T1, T2>* first2)
	{
		if (first1 == nullptr) return first2;
		if (first2 == nullptr) return first1;
#ifdef DEBUG
		Log << "in merch " << first1->key << ' ' << first2->key << '\n';
#endif
		if (first2->key < first1->key)swap(first1, first2);
		//все ключы в первом должны быть
		if (first2->priority > first1->priority)
		{
			first2->left = merch(first1, first2->left);
#ifdef DEBUG
			Log << "return2 ";
			if (first2 != nullptr)Log << "first2\n" << first2->key;
			Log << '\n';
#endif
			return first2;
		}
		//корнем делаем корень второго дерева
		else
		{
			first1->right = merch(first1->right, first2);
#ifdef DEUBG
			Log << "return1 ";
			if (first1 != nullptr)Log << "first1\n" << first1->key;
			Log << '\n';
#endif
			return first1;
		}
		//корнем делаем корень первого дерева
	}
	pair< tree<T1, T2>*, tree<T1, T2>* > split(tree<T1, T2>* first, T1& x)
	{
		if (first == nullptr)return { nullptr,nullptr };
#ifdef DEBUG
		Log << "split ";
		if (first != nullptr)Log << first->key << '\n';
#endif
		pair< tree<T1, T2>*, tree<T1, T2>* > q;
		if (first->key < x)
		{
			pair< tree<T1, T2>*, tree<T1, T2>* > q2;
			q2 = split(first->right, x);
			first->right = q2.first;
			q.first = first;
			q.second = q2.second;
		}
		else
		{
			pair< tree<T1, T2>*, tree<T1, T2>* > q2;
			q2 = split(first->left, x);
			first->left = q2.second;
			q.second = first;
			q.first = q2.first;
		}
#ifdef DEBUG
		Log << "return ";
		if (q.first != nullptr)Log << "first " << q.first->key << ' ';
		if (q.second != nullptr)Log << "second " << q.second->key;
		Log << '\n';
#endif //DEBUG
		return q;
	}
	T2* find(T1& x, tree<T1, T2>* y)
	{
		if (y == nullptr)return nullptr;
		if (y->key == x)return &y->element;
		if (y->key < x)return find(x, y->right);
		if (y->key > x)return find(x, y->left);
	}
	T2* otherfind(T1& x, tree<T1, T2>* y)
	{
		if (y == nullptr)return nullptr;
		if (y->element < x)return otherfind(x, y->right);
		if (y->left != nullptr && y->left->element >= x)return otherfind(x, y->left);
		return &y->element;
	}
public:
	void add(T1 key, T2 element)
	{
		srand(time(0));
		tree<T1, T2>* nov = new tree<T1, T2>;
		nov->element = element;
		nov->key = key;
		nov->priority = rand();
		pair< tree<T1, T2>*, tree<T1, T2>* > q1 = split(first, key);
		tree<T1, T2>* q2 = merch(q1.first, nov);
		q2 = merch(q2, q1.second);
		first = q2;
	}
	void erase(T1 key)
	{
		pair< tree<T1, T2>*, tree<T1, T2>* > q1 = split(first, key);
		key++;
		pair< tree<T1, T2>*, tree<T1, T2>* > q2 = split(q1.second, key);
		first = merch(q1.first, q2.second);
		delete q2.first;
	}
	T2 get(T1 key, T2 error = NULL)
	{
		T2* q = find(key, first);
		if (q == nullptr)return error;
		return *q;
	}
	T2 otherget(T1 key)
	{
		T2* ans = otherfind(key, first);
		if (ans == nullptr)return -1;
		else return *ans;
	}
};
int __gcd(int a, int b)
{
	while (a != 0)
	{
		b %= a;
		swap(a, b);
	}
	return b;
}
const int N = 1e6;
int st(int a,int k)
{
	int ans = 1;
	for (int i = 0; i < k; i++)
	{
		ans *= a;
	}
	return ans;
}
main()
{
	int n;
	cin >> n;
	if (n % 2 == 1)cout << 0;
	else
	{
		cout << st(2, n / 2);
	}
}

#include <iostream>
#include <iosfwd>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <cassert>
#include <cctype>
#include <climits>
#include <vector>
#include <bitset>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <deque>
#include <string>
#include <list>
#include <iterator>
#include <sstream>
#include <complex>
#include <fstream>
#include <functional>
#include <numeric>
#include <utility>
#include <algorithm>
#include <assert.h>
#include <unordered_map>
using namespace std;
// I hope you understand what i have coded :D , All the best
// shubhamk840@gmail.com
#define IOS ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(0);
#define endl '\n'
#define stackofi stack<int>
#define queueofi queue<int>
#define vectoriterator vector<int>::iterator
#define mapiterator map<int,int>::iterator
#define setiterator set<int>:: iterator
#define yes cout<<"YES"<<endl
#define no cout<<"NO"<<endl
#define MOD 1000000007
// macros for inputting 1-D and 2-D array.
#define stringiterator string:: iterator
#define pb push_back
#define all(c) (c).begin(),(c).end()
#define rall(c) (c).rbegin(),(c).rend()
#define ai(arr,n) for(int i=0;i<n;i++)cin>>arr[i];
#define ao(arr) for(auto wtf:arr) cout<<wtf<<" ";
#define mi(arr,m,n) for(int i=0;i<m;i++){ for(int j=0;j<n;j++) cin>>arr[i][j];}
#define mo(arr,m,n) for(int i=0;i<m;i++){ for(int j=0;j<n;j++) cout<<arr[i][j]<<" "; cout<<endl;}
#define countsetbits(x) __builtin_popcount(x)
#define ll long long
#define debugger cout<<"I AM EXECUTING"<<endl
#define debug(x) cout<<#x<<"->"<<x<<endl;
#define F first
#define S second
#define testcases int asdf; cin>>asdf; while(asdf--)
#define space cout<<endl
#define vi vector<int>
#define si set<int>
#define vc vector<char>
#define sc set<char>
#define vll vector<long long int>
#define vs vector<string>

string sconvert(int n)
{
	stringstream ss;
	ss<<n;
	string str = ss.str();
	return str;
}
bool sortbysec(const pair<int,int> &a,
              const pair<int,int> &b)
{
    return (a.second > b.second);
}
template<typename KeyType, typename ValueType>  // for finding max element in the map.
std::pair<KeyType,ValueType> get_max( const std::map<KeyType,ValueType>& x ) {
  using pairtype=std::pair<KeyType,ValueType>;
  return *std::max_element(x.begin(), x.end(), [] (const pairtype & p1, const pairtype & p2) {
        return p1.second < p2.second;
  });
}

int add(int a, int b, int mod = MOD) {
    if (a + b >= mod) {
        return a + b - mod;
    }
    return a + b;
}

int sub(int a, int b, int mod = MOD) {
    if (a - b < 0) {
        return a - b + mod;
    }
    return a - b;
}

int mul(int a, int b, int mod = MOD) {
    return (int)(1ll * a * b % mod);
}

int  single()
{
	ll int n;
	cin>>n;
	int temp = n*3;
	if(n%2!=0)
	cout<<0<<endl;
	else
	{
	   cout<<(ll)pow(2,temp/6)<<endl;
	}

	return 0;
}
void multiple()
{
	testcases
    {
		single();
	}
}

int main()
{
  IOS;
  single();

}

//
// Created by hanjinyu on 19-6-5.
//
#include<bits/stdc++.h>

using namespace std;
const int maxn = 2e5 + 10;
typedef long long ll;
ll power(ll a,ll b)
{
    ll result = 1;
    while(b)
    {
        if(b&1) result = result*a;
        a=a*a;
        b>>=1;

    }
    return result;
}
int main()
{

    ll n;
    while(cin>>n) {
        if (n % 2 != 0)
            cout << 0 << endl;
        else if(n==2)
            cout<<2<<endl;
        else {
            ll ss=n/2;
            ll dd=pow(2,ss);
            printf("%i\n",dd);
           // cout << pow(4, n / 4) << endl;
        }
    }
    return 0;
}

#include <bits/stdc++.h>
#define REP(i,a,b) for(long long i=a; i<b;i++)
#define N 1000000007
#define MAX 100007
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define PI 3.14159265358979323
#define all(x) x.begin(),x.end()
#define uniq(x) x.erase(unique(x.begin(),x.end()),x.end())
#define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
#define GET_POS(c,x) (lower_bound(c.begin(),c.end(),x)-c.begin())
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<ll> vi;
typedef vector< pair<ll,ll> > vpi;
const long double pi=4*atan(1.0);
vpi vii;
ll tab[1000002],n;

ll Xor(ll x, ll y)
{
   return (x | y) & (~x | ~y);
}

ll dx[8]={0,1,0,-1,1,-1,1,-1};
ll dy[8]={1,0,-1,0,1,-1,-1,1};

ll number_divisors(ll n)
{
   ll d;
    ll i;
    d=0;
    for(i = 1 ; i*i<n  ;++i)
        if(n%i == 0)
            {d+=2;}

    if(i*i == n)
        d++;
return d;
}

ll countDivisibles(ll A, ll B, ll M)
{

    if (A % M == 0)
        return (B / M) - (A / M) + 1;
    return (B / M) - (A / M);
}
bool ch (ll i,ll j,ll n, ll m)
{
    return (i>=0 && i<n && j>=0 && j<m);
}
vi cost,aux;
vector<ll> v1[MAX];
ll z[MAX],mini=1000000005,out=0;
void dfs(ll s)
{   if (z[s]) return;
 z[s] = 1;
 aux.PB(s);
 for (ll u=0;u<v1[s].size();u++)
    { dfs(v1[s][u]);}
return;
 }

ull gcd(ll a, ull b) {
   if (b == 0)
      return a;
   return gcd(b, a % b);
}

int main()
{
ll n;
cin>>n;

if (n % 2) cout<<0;
else {
    cout<<(long long) powl(2,n/2);
}
return 0;

}

#include <bits/stdc++.h>
#define int int64_t
using namespace std;

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n;		cin >> n;
	if(n%2 == 0)
		cout << int(pow(2,n/2)) << '\n';
	else
		cout << '0' << '\n';

	return 0;
}

#include <stdio.h>
int main(void){
	int n; scanf("%d", &n);
	if(n%2==0) printf("%d", 1<<(n/2));
	else printf("0");
	return 0;
}

#include<bits/stdc++.h>
using namespace std;

#define ll long long int
#define pi 3.141592653589793238
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define mod 1000000007

void solve()
{
    int n;
    cin>>n;
    if(n%2)
        cout<<0;
    else
        cout<<(ll)pow(2,(n/2));
    return;
}

int main()
{
	FAST;
    ll q;
    q=1;
    // cin>>q;
    while(q--)
        solve();
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main()
{
	cin>>n;
	if(n%2==1)
	{
		cout<<"0"<<endl;
		return 0;
	}
	ans=pow(2,n/2);
	cout<<ans<<endl;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define llu unsigned long long
#define eb emplace_back
#define pb push_back
#define mp make_pair
#define ext exit(0)
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define newl printf("\n")
#define nl '\n'
#define endl '\n'
#define sci(x) scanf("%d",&(x))
#define scll(x) scanf("%lld",&(x))
#define sci2(x,y) scanf("%d %d",&(x),&(y))
#define loop(x,y) for(int itr = (x); itr <= (y); itr++)
#define fora(x) for(int itr = 0; itr < (x); itr++)
#define F first
#define S second
#define mset0(x) memset((x), 0, sizeof((x)));
#define mset1(x) memset((x), -1, sizeof((x)));
#define all(x) (x).begin(),(x).end()
#define pqmin(x) priority_queue<x, vector<x>, greater<x> >
#define pqmax(x) priority_queue<x>
#define sortd(x) sort(all(x), greater<int>())
#define vi vector<int>
#define pii pair<int,int>
#define mpii map<int,int>
#define elif else if
#define debug(x) cerr << "Debug: " << x << '\n';
#define pi 3.14159265358979323846D
#define gcd(x,y) __gcd(x,y)
#define lcm(x,y) __lcm(x,y)
#define fact(x) factorial(x)
template <typename type> type __lcm(type n1,type n2){return n1*(n2/gcd(n1,n2));}
ll nCr(int n, int r)
{
    int f1 = r, f2 = n-r;
    if(f2 > f1) swap(f2,f1);
    ll result = 1;
    for(int i = 1; i <= f2; i++)
    {
        result *= (i+f1);
        result /= i;
    }
    return result;
}
ll nPr(int n, int r, ll mod = 0)
{
    ll result = 1;
    for(int i = n-r+1; i <= n; i++) {result *= i; if(mod) result %= mod;}
    return result;
}
ll factorial(int n, ll modulo = 0)
{
    if(n == 0) return 1;
    if(modulo) return (n*factorial(n-1))%modulo;
    else return n*factorial(n-1);
}
void io_txt()
{
    #ifndef ONLINE_JUDGE
    //freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
}
/// I am done with macro ///

#define MOD 10000007
#define MAX 1000000
void f();
int main()
{
    //fastIO;
    //io_txt();
    int t = 1;
    //sci(t);
    loop(1,t)
    {
        //printf("Case %d: ", i);
        f();
    }
}

void f()
{
    int n;
    cin >> n;
    if(n&1) cout << 0;
    else cout << (1<<(n/2));
 }

/*
#pragma GCC optimize("Ofast", "O3", "unroll-loops", "omit-frame-pointer", "inline")
#pragma GCC target("sse", "sse2", "sse3", "ssse3", "sse4", "popcnt", "abm", "mmx", "avx")
#pragma GCC option("tune = native", "arch = native", "no-zero-upper")
#pragma comment(linker, "/stack:200000000")
*/

#include <bits/stdc++.h>

typedef bool bo;
typedef short sh;
typedef long long ll;
typedef unsigned long long ull;
typedef double de;
typedef long double lde;
typedef char ch;

#define spd ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define file(x, y) freopen((x), "rt", stdin); freopen((y), "wt", stdout)
#define pr pair
#define str string
#define vec vector
#define vint vec <int>
#define vll vec <ll>
#define vull vec <ull>
#define vlde vec <lde>
#define vch vec <ch>
#define vstr vec <str>
#define vbo vec <bo>
#define ph push
#define phf push_front
#define phb push_back
#define ins insert
#define sub substr
#define re reverse
#define bn begin()
#define ed end()
#define rbn rbegin()
#define red rend()
#define se size()
#define ey empty()
#define tp top()
#define pp pop()
#define ft front()
#define ppf pop_front()
#define bk back()
#define ppb pop_back()
#define cr clear()
#define ee erase
#define rse resize
#define te true
#define fe false
#define st first
#define nd second
#define antihype signed main()
#define all(x) (x).bn, (x).ed
#define allc(x) (x).bn, (x).ed, cmp
#define rall(x) (x).rbn, (x).red
#define rallc(x) (x).rbn, (x).red, cmp
#define coutf(x) cout << fixed << setprecision(x)
#define gle(x) getline(cin, (x))
#define loop(i, n) (int i = 0; i < (n); ++i)
#define rloop(i, n) (int i = (n - 1); i > -1; --i)
#define loopll(i, n) (ll i = 0; i < (n); ++i)
#define rloopll(i, n) (ll i = (n - 1); i > -1; --i)
#define incloop(i, x, y) (int i = (x); i < (y); ++i)
#define decloop(i, x, y) (int i = (x); i > (y); --i)
#define incloopll(i, x, y) (ll i = (x); i < (y); ++i)
#define decloopll(i, x, y) (ll i = (x); i > (y); --i)
#define steploop(i, x, y, z) (int i = (x); i < (y); i += (z))
#define steploopll(i, x, y, z) (ll i = (x); i < (y); i += (z))
#define loopst(i, n) (size_t i = 0; i < (n); ++i)
#define cinvint(v, n) vint v(n); for loopst(i, n) cin >> v[i]
#define cinvll(v, n) vll v(n); for loopst(i, n) cin >> v[i]
#define cinvull(v, n) vull v(n); for loopst(i, n) cin >> v[i]
#define cinvlde(v, n) vlde v(n); for loopst(i, n) cin >> v[i]
#define cinvch(v, n) vch v(n); for loopst(i, n) cin >> v[i]
#define cinvstr(v, n) vstr v(n); for loopst(i, n) cin >> v[i]
#define sqr(a) (a) * (a)

using namespace std;

antihype {
	spd;
	//file("input.in", "output.out");
	vint v = { 0, 2, 0, 4, 0, 8, 0, 16, 0, 32, 0, 64, 0, 128, 0, 256, 0, 512, 0, 1024, 0, 2048, 0, 4096, 0, 8192, 0, 16384, 0, 32768, 0, 65536, 0, 131072, 0, 262144, 0, 524288, 0, 1048576, 0, 2097152, 0, 4194304, 0, 8388608, 0, 16777216, 0, 33554432, 0, 67108864, 0, 134217728, 0, 268435456, 0, 536870912, 0, 1073741824 };
	int n;
	cin >> n;
	cout << v[n - 1];
	return 0;
}

/*
#pragma GCC optimize("Ofast", "O3", "unroll-loops", "omit-frame-pointer", "inline")
#pragma GCC target("sse", "sse2", "sse3", "ssse3", "sse4", "popcnt", "abm", "mmx", "avx")
#pragma GCC option("tune = native", "arch = native", "no-zero-upper")
#pragma comment(linker, "/stack:200000000")
*/

#include <bits/stdc++.h>

typedef bool bo;
typedef short sh;
typedef long long ll;
typedef unsigned long long ull;
typedef double de;
typedef long double lde;
typedef char ch;

#define spd ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define file(x, y) freopen((x), "rt", stdin); freopen((y), "wt", stdout)
#define pr pair
#define str string
#define vec vector
#define vint vec <int>
#define vll vec <ll>
#define vull vec <ull>
#define vlde vec <lde>
#define vch vec <ch>
#define vstr vec <str>
#define vbo vec <bo>
#define ph push
#define phf push_front
#define phb push_back
#define ins insert
#define sub substr
#define re reverse
#define bn begin()
#define ed end()
#define rbn rbegin()
#define red rend()
#define se size()
#define ey empty()
#define tp top()
#define pp pop()
#define ft front()
#define ppf pop_front()
#define bk back()
#define ppb pop_back()
#define cr clear()
#define ee erase
#define rse resize
#define te true
#define fe false
#define st first
#define nd second
#define antihype signed main()
#define all(x) (x).bn, (x).ed
#define allc(x) (x).bn, (x).ed, cmp
#define rall(x) (x).rbn, (x).red
#define rallc(x) (x).rbn, (x).red, cmp
#define coutf(x) cout << fixed << setprecision(x)
#define gle(x) getline(cin, (x))
#define loop(i, n) (int i = 0; i < (n); ++i)
#define rloop(i, n) (int i = (n - 1); i > -1; --i)
#define loopll(i, n) (ll i = 0; i < (n); ++i)
#define rloopll(i, n) (ll i = (n - 1); i > -1; --i)
#define incloop(i, x, y) (int i = (x); i < (y); ++i)
#define decloop(i, x, y) (int i = (x); i > (y); --i)
#define incloopll(i, x, y) (ll i = (x); i < (y); ++i)
#define decloopll(i, x, y) (ll i = (x); i > (y); --i)
#define steploop(i, x, y, z) (int i = (x); i < (y); i += (z))
#define steploopll(i, x, y, z) (ll i = (x); i < (y); i += (z))
#define loopst(i, n) (size_t i = 0; i < (n); ++i)
#define cinvint(v, n) vint v(n); for loopst(i, n) cin >> v[i]
#define cinvll(v, n) vll v(n); for loopst(i, n) cin >> v[i]
#define cinvull(v, n) vull v(n); for loopst(i, n) cin >> v[i]
#define cinvlde(v, n) vlde v(n); for loopst(i, n) cin >> v[i]
#define cinvch(v, n) vch v(n); for loopst(i, n) cin >> v[i]
#define cinvstr(v, n) vstr v(n); for loopst(i, n) cin >> v[i]
#define sqr(a) (a) * (a)

using namespace std;

antihype {
	spd;
	//file("input.in", "output.out");
	int v[60] = { 0, 2, 0, 4, 0, 8, 0, 16, 0, 32, 0, 64, 0, 128, 0, 256, 0, 512, 0, 1024, 0, 2048, 0, 4096, 0, 8192, 0, 16384, 0, 32768, 0, 65536, 0, 131072, 0, 262144, 0, 524288, 0, 1048576, 0, 2097152, 0, 4194304, 0, 8388608, 0, 16777216, 0, 33554432, 0, 67108864, 0, 134217728, 0, 268435456, 0, 536870912, 0, 1073741824 };
	int n;
	cin >> n;
	cout << v[n - 1];
	return 0;
}

#include <iostream>
#include <cmath>
#include<set>
#include <algorithm>
using namespace std;
/*struct ab
{
    int a,b;
};
set<int>x;*/
int main()
{
    /*int n,m;
    x.clear();
    for(int i=0;i<=250;i++)
        for(int j=0;j<=250;j++)
        {
            x.insert(i*i+j*j);
        }
    while(cin>>n>>m)
    {

    }*/
    int n;
    while(cin>>n)
    {

            if(n%2==1)
                printf("0\n");
            else
            {
                int ans=n/2;
                ans=pow(2,ans);
                printf("%d\n",ans);
            }

    }

}

#include <bits/stdc++.h>
#include<iostream>
long long pwr(int b,int p){
    if(p==0)return 1;
    long long sq=pwr(b,p>>1);
    sq*=sq;
    if(p&1)sq*=b;
    return sq;
}

int main(){
int n;
    scanf("%d",&n);
    if(n%2==0)
    printf("%lld",pwr(2,n/2));
    else
    puts("0");
return 0;
}

#include<cstdio>
int main() {
	int n;
	scanf("%d",&n);
	if(n&1) printf("0\n");
	else printf("%d\n",1<<(n/2));
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
long long a,b;
int main()
{
	cin>>a;
	b=pow(2,a/2);
	cout<<((a%2)?0:b);
	return 0;
}

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    long long f;
    int n;
    cin>>n;
    if(n%2==0)
    {
        f=pow(2,n/2);
        cout<<f<<"";

    }
    else
    {
        cout<<0<<"";
    }
    return 0;
}

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int n;
    cin >> n;
    if(n == 0)
        cout << 0;
    else if(n % 2 == 0)
           cout << long long(pow(2, n /2));
    else
        cout << 0;
    return 0;
}

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
 unsigned long long int n; cin>>n;
 if(n%2!=0)
    cout<<0;
  else
  {
    unsigned long long int ans = 1 << (n/2);
    cout<<ans;
  }
  return 0;

}

#include<bits/stdc++.h>
using namespace std;
typedef long long ll ;
int main()
{
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    ll n; cin >> n;
    if(n&1) cout << 0 << endl;
    else cout << (ll)pow(2,n/2)<< endl;

}

#include<bits/stdc++.h>
using namespace std;

#define int long long

const int N = 1e5+10;

signed main()
{
	int n;
	cin >> n;

	 if(n%2==0)
	{
		int x = n/2;
		cout << (int)pow(2,x);
	}
	else
	cout << 0;
}

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin>>n;
    if (n&1){
        cout<<0;
    }
    else {
        cout<<(long long)pow(2, n/2);
    }
    return 0;
}

#include <iostream>
#include <algorithm>
#include <functional>
#include <numeric>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <cassert>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <bitset>
#include <sstream>
#include <stack>
#include <unordered_set>
#include <windows.h>
#include <math.h>

#define M_PI 3.14159265358979323846
#ifndef _DEPRECATION_DISABLE   /* One time only */
#define _DEPRECATION_DISABLE   /* Disable deprecation true */
#if (_MSC_VER >= 1400)         /* Check version */
#pragma warning(disable: 4996) /* Disable deprecation */
#endif /* #if defined(NMEA_WIN) && (_MSC_VER >= 1400) */
#endif /* #ifndef _DEPRECATION_DISABLE */

using namespace std;

//#pragma comment( lib, "winmm.lib" )

int main()
{
	//cout << "Fack you" << endl;
	//int i = 0;
	//while (++i < 10)
	//{
		//MCI_OPEN_PARMS mPar = { 0 };
		//mPar.lpstrDeviceType = reinterpret_cast<LPCWSTR>(MCI_DEVTYPE_CD_AUDIO);

		// Open device
		//mciSendCommand(0, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD)& mPar);

		// Open tray
		//mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);

		// Close tray
		//mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);

		// Close device
		//mciSendCommand(mPar.wDeviceID, MCI_CLOSE, MCI_WAIT, 0);

		//cout << "Open CD" << endl;
	//}

	int s, n;
	cin >> s;

	if (s % 2 == 0) {

		cout << (long long)pow(2, s / 2);
	}
	else
	{
		cout << 0;
	}

	return 0;
}

#include <iostream>
using namespace std;
int n, ans = 1;
int main()
{
    ios::sync_with_stdio(false);
    cin >> n;
    if (n & 1)
    	cout << "0";
    else
		cout << ((long long)1 << (n >> 1));
    return 0;
}

#include <iostream>
#include <cmath>

using namespace std;

int main ()
{
       long long k;
       cin >> k;

       if (k % 2 == 0)
       {
              k = pow (2, k / 2);
              cout << k;
       }

       else
       {
              cout << '0';
       }

       return 0;
}

#include<bits/stdc++.h>
//template Emae
#define forin(i,n) for(int i=0;i<n;i++)
#define forisn(i,s,n) for(int i=s;i<n;i++)
#define fortin(i,n) for(int i=0;i<=n;i++)
#define nforin(i,n) for(int i=n;i>-1;i--)
#define mostrar(x,s) for(auto x : s)cout<<x<<" ";
#define desc greater<int>()
#define asc less<int>()
#define all(v) v.begin(),v.end()
//loops and more
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef set<int> si;
typedef map<string,int> msi;
typedef pair<int,int> pii;
typedef set<int>::iterator itsi;
typedef map<string,int>::iterator itmsi;
//solve

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    cin>>n;
    cout<<((n%2)?0:2<<(n/2-1))<<"\n";
    return 0;
}

#include <stdio.h>
#include <math.h>

int main()
{
	int n;
	scanf_s("%d", &n);
	if (n % 2 != 0) printf("0\n");
	else printf("%d\n", (int)(pow(2, (n / 2))));
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a=2;
     if(n%2==0){
            for(int i=1;i<n/2;i++)
            a=a*2;
            cout<<a;
     }
    else
        cout<<0;
return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long int n;
	cin>>n;
	if(n%2)
	    cout<<"0";
    else
    {
	    long long int x = pow(2,n/2);
	    cout<<x;
    }
}

#include <iostream>
#include <cmath>

using namespace std;
int main()
{
    int n, m;
    long long int k;
    cin >> n;
    if(n % 2 == 0)
    {
        m = n / 2;
        k = pow(2, m);
        cout << k << endl;
    }
    else
    {
        cout << 0 << endl;
    }

}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long int n,m;
    cin>>n;
    if(n%2)
        cout<<"0"<<endl;
    else
        {
            m=pow(2,(n/2));
            cout<<m<<endl;
        }
}

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<string>
#include<string.h>
#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
#include<time.h>
#include<queue>
#include<map>
#include<limits.h>

#define vi vector<int>
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef double dd;

#define fast  std :: ios :: sync_with_stdio ( false )
#define pi 3.141592653589793238462643383279
#define rad 57.295779513082323
#define am &
#define sc scanf
#define scd(i) scanf("%d",am i)
#define pr printf
#define mp make_pair
#define poo(i,a,b) for(ll i=a;i<=b;i++)
#define oop(i,a,b) for(ll i=a;i>=b;i--)
using namespace std;
namespace Help
{
	ll gcd(ll a, ll b)
	{
		while (a != 0 && b != 0)
		{
			if (a > b)
				a &= b;
			else
				b %= a;
		}
		return a + b;
	}
	void Qsort(int a[], int f, int q)
	{
		int l = f, r = q, x = a[(f + q) / 2], c;

		if (f >= q) return;
		while (l <= r)
		{
			while (a[l] < x)
				l++;
			while (a[r] > x)
				r--;
			if (l <= r)
			{
				swap(a[l], a[r]);
				l++;
				r--;
			}

		}
		Qsort(a, f, r);
		Qsort(a, l, q);
	}
	void Qsort(ll a[], int f, int q)
	{
		ll l = f, r = q, x = a[(f + q) / 2], c;

		if (f >= q) return;
		while (l <= r)
		{
			while (a[l] < x)
				l++;
			while (a[r] > x)
				r--;
			if (l <= r)
			{
				swap(a[l], a[r]);
				l++;
				r--;
			}

		}
		Qsort(a, f, r);
		Qsort(a, l, q);
	}
	int binsearch(int n, int a[], int h)
	{
		int l = 0, r = h, c = n;
		while (l < r - 1)
		{
			c = (l + r) / 2;
			if (n < a[c])
				r = c;
			else l = c;
		}
		if (a[l] == n)
			return l + 1;
		else return -1;
	}
	bool isPrime(ll a)
	{
		ll i;
		if (a % 2 == 0)
			return 0;
		else
			for (i = 3; i * i <= a; i += 2)
				if (a % i == 0)
					return 0;
		return 1;
	}
};
int main()
{
	int n;
	scd(n);
	if (n % 2 == 1)printf("0");
	else printf("%I64d",(ll)pow(2,n/2));
	return 0;
}

#include<cmath>
#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if (n&1) cout<<0;
    else cout<<(unsigned long long)pow(2,n/2);
    return 0;
}

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    long long n;
    long long summ = 2;
    cin >> n;
    if ( n%2 == 1 ) cout << 0;
    else
    {
        n /= 2;
        for ( int i = 1; i < n; i++ )
            summ = summ*2;
        cout << summ;
    }
    return 0;
}

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
using ll = long long;

ll arr[65];

int main()
{
	int n;
	cin >> n;
	int s = 3 * n;
	if (s % 6 != 0)
	{
		cout << 0;
		return 0;
	}
	arr[0] = 1;
	arr[2] = 2;
	for (int i = 2; i <= 60; i+=2)
	{
		arr[i] = arr[i - 2] * 2;
	}
	cout << arr[n];
}

#include <bits/stdc++.h>
using namespace std;

int main(){

    int n;
    cin>>n;
    if(n%2==0){
        cout<<(long)pow(2,n/2)<<endl;
    }else{
        cout<<"0"<<endl;
    }

    return 0;
}

#include<bits/stdc++.h>
#include<string>
using namespace std;

//redjerrk

#define pf printf
#define sf scanf
#define ipf(n) printf("%d",n)
#define isf(n) scanf("%d",&n)
#define loop (int i=0; i<n; i++)
#define rloop for(int i=n; i>0; i--)
#define ifor(x,n) for(int i =int(x); i<=int(n); i++)
#define llu unsigned long long
#define lld long long
#define gets getline (cin,s)
#define U unsigned int
#define ll long long int
#define pb push_back
#define pob pop_back
#define space printf(" ")
#define line printf("\n")
#define start int main()
#define caseT int T,cs; cin>>T; for(cs = 1; cs<=T; cs++)
#define finish return 0
#define yes printf("YES")
#define no  printf("NO")

#define MAX 100000

start{

    long long int n;
    cin>>n;
    if(n%2==1){
       cout<<0<<endl;
        return 0;
    }

    cout<< (long long int)pow(2, n/2)<<endl;

    finish;
}

#include<iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	if (n % 2 == 0)
		cout << (long int)pow(2,n/2) <<endl;
	else
		cout << '0'<<endl;

	return 0;
}

#include<bits/stdc++.h>
using namespace std;

int N;

inline int Rd() {
    int x = 0, f = 1; char ch = getchar();
    while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar(); }
    while(ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
    return x * f;
}

int main() {
    N = Rd();
    if(N & 1) {
        puts("0");
        return 0;
    }
    N >>= 1;
    cout << (1 << N) << endl;
    return 0;
}

#include <typeinfo>
#include<bits/stdc++.h>
using namespace std;

#define lli long long int
#define llf long long float

#define IOS ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);

#define FOR(i,l,r) for(__typeof(r) i=l-(l>r);i!=r-(l>r);i+=(1-2*(l>r)))
#define endl '\n'

#define pb push_back

#define mod 1e9+7

#define pii pair<int,int>
#define pll pair<lli,lli>
#define vi vector<int>
#define vlli vector<lli>
#define vpi vector<pii>
#define vpl vector<pll>
lli power(int n)
{
	lli ans=1,x=2;
	while(n)
	{
		if(n&1)
			ans*=x;
		n=n>>1;
		x=x*x;
	}
	return ans;
}
int main()
{

    IOS;
    int n;
    cin>>n;
    if(n%2)
    	cout<<0<<endl;
    else
    	cout<<power(n/2)<<endl;
return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n;
    cin>>n;
    if(n%2==1)
    {
        cout<<0;

    }
    else
    {
        cout<<(1<<n/2)<<endl;

    }
    return 0;
}

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

int main()
{
	int n;
	cin >> n;
	if (n % 2 == 1) {
		cout << "0" << endl;
	}
	else {
		int ans = pow(2, n / 2);
		cout << ans << endl;
	}
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long int n,j;
	cin>>n;
	if(n%2==1)
	{
		cout<<"0";
		return 0;
	}
	n=n/2;
	j=pow(2,n);
	cout<<j;
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n;
    cin>>n;
    if(n%2==1)
    cout<<"0"<<endl;
    else
    {
        long long a=pow(2,n/2);
        cout<<a<<endl;
    }

}

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n;
long long sum;
int main(){
    cin>>n;
    if(n%2==0){
        sum=pow(2,n/2);
        cout<<sum;
        putchar('\n');
    }
    else{
        cout<<0;
        putchar('\n');
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long  n;
	cin>>n;
	if(n%2==0){
		long long result =pow(2,n/2);
		cout<<result;
	}

	else cout<<"0";

	return 0;
}

#include<map>
#include<list>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include <iostream>
#include <cstdio>
#define qwq putchar('\n');
using namespace std;
int main(){
    int n;
    long long sum=0;
    cin>>n;
    if(n%2==0){
        sum=pow(2,n/2);
        cout<<sum;
        qwq;
    }
    else{
        cout<<0;
        qwq;
    }
    return 0;
}

//#include<bits/stdc++.h>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<stack>
#include<vector>
//#include<conio.h>
#include<string>
#include<map>
#include<cstdlib>
#include<queue>
#include<math.h>
#include<time.h>
#include<cstdio>
#include<stdio.h>
#include<algorithm>
#define ll long long
using namespace std;
ll n;
inline ll read(){
	ll ans=0,flag=1;
	char ch=getchar();
	while((ch>'9'||ch<'0')&&ch!='-') ch=getchar();
	if(ch=='-') flag=-1,ch=getchar();
	while(ch>='0'&&ch<='9'){
		ans=(ans<<1)+(ans<<3)+(ch^'0');
		ch=getchar();
	}
	return ans*flag;
}
int main(){
    n=read();
    if(n&1) printf("0\n");
    else printf("%lld\n",(ll)1<<(n>>1));
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define SZ(x) (long long)x.size()
#define endl '\n'
#define FAST                                                                   \
  ios_base::sync_with_stdio(false);                                            \
  cin.tie(0);                                                                  \
  cout.tie(0)
#define tc                                                                     \
  int tc;                                                                      \
  cin >> tc;                                                                   \
  while (tc--)
#define REP(i, a, b) for (int i = a; i < b; i++)
#define REPO(i, b, a) for (int i = b - 1; i >= a; i--)
#define REPI(i, a, b) for (int i = a; i <= b; i++)
#define MOD 1000000007

int32_t main() {
  FAST;
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
  freopen("output.txt", "w", stderr);
#endif
  int n;
  cin >> n;
  if (n % 2 == 0) {
    cout << (1 << (n / 2));
  } else
    cout << 0;
  return 0;
}

/********   All Required Header Files ********/
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <queue>
#include <deque>
#include <bitset>
#include <iterator>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <functional>
#include <numeric>
#include <utility>
#include <limits>
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>

using namespace std;

/*******  All Required define Pre-Processors and typedef Constants *******/
#define SCD(t) scanf("%d",&t)
#define SCLD(t) scanf("%ld",&t)
#define SCLLD(t) scanf("%lld",&t)
#define SCC(t) scanf("%c",&t)
#define SCS(t) scanf("%s",t)
#define SCF(t) scanf("%f",&t)
#define SCLF(t) scanf("%lf",&t)
#define MEM(a, b) memset(a, (b), sizeof(a))
#define FOR(i, j, k, in) for (int i=j ; i<k ; i+=in)
#define RFOR(i, j, k, in) for (int i=j ; i>=k ; i-=in)
#define REP(i, j) FOR(i, 0, j, 1)
#define RREP(i, j) RFOR(i, j, 0, 1)
#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++)
#define IN(A, B, C) assert( B <= A && A <= C)
#define MP make_pair
#define PB push_back
#define INF (int)1e9
#define EPS 1e-9
#define PI 3.1415926535897932384626433832795
#define MOD 1000000007
#define read(type) readInt<type>()
const double pi=acos(-1.0);
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<PII> VII;
typedef vector<VI> VVI;
typedef map<int,int> MPII;
typedef set<int> SETI;
typedef multiset<int> MSETI;
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int  uint64;

/****** Template of some basic operations *****/
template<typename T, typename U> inline void amin(T &x, U y) { if(y < x) x = y; }
template<typename T, typename U> inline void amax(T &x, U y) { if(x < y) x = y; }
/**********************************************/

/****** Template of Fast I/O Methods *********/
template <typename T> inline void write(T x)
{
    int i = 20;
    char buf[21];
    // buf[10] = 0;
    buf[20] = '\n';

    do
    {
        buf[--i] = x % 10 + '0';
        x/= 10;
    }while(x);
    do
    {
        putchar(buf[i]);
    } while (buf[i++] != '\n');
}

template <typename T> inline T readInt()
{
    T n=0,s=1;
    char p=getchar();
    if(p=='-')
        s=-1;
    while((p<'0'|| p>'9') && (p!=EOF&&p!='-'))
        p=getchar();
    if(p=='-')
        s=-1,p=getchar();
    while(p>='0'&&p<='9') {
        n = (n<< 3) + (n<< 1) + (p - '0');
        p=getchar();
    }

    return n*s;
}
/************************************/

/******* Debugging Class Template *******/
#define DEBUG

#ifdef DEBUG

    #define debug(args...)     (Debugger()) , args

    class Debugger
    {
        public:
        Debugger(const std::string& _separator = " - ") :
        first(true), separator(_separator){}

        template<typename ObjectType> Debugger& operator , (const ObjectType& v)
        {
            if(!first)
                std:cerr << separator;
            std::cerr << v;
            first = false;
            return *this;
        }
        ~Debugger() {  std:cerr << endl;}

        private:
        bool first;
        std::string separator;
    };

#else
    #define debug(args...)                  // Just strip off all debug tokens
#endif

/**************************************/

/******** User-defined Function *******/

/**************************************/

/********** Main()  function **********/
void run();
int main()
{

    #ifndef ONLINE_JUDGE
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    #endif

    run();
    return 0;
}
/********  Main() Ends Here *************/
void run()
{
    int n; long long ans=0;
   cin >> n;

	if(n%2==0)
	{
		n=n/2;
		ans=pow(2,n);
	}
	write(ans);
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define mod 1000000007
int main()
{
    ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	ll n,x;
	cin>>n;
	if(n%2==0)
	{
		x=pow(2,n/2);
		cout<<x;
	}
	else
	{
		cout<<0;
	}
	return 0;
}

#include<iostream>

using namespace std;

int n;
int ans = 1;

int main(){
	cin >> n;
	if(n % 2 != 0){
		cout << "0" << endl;
		return 0;
 	}
 	else{
 		for(int i = 1; i <= n / 2; i ++){
 			ans = 2 * ans;
 		}
 		cout << ans << endl;
 	}
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll ;
int main()
    {
        int n ;
        cin>>n;
        if(n%2==0)
        {
            int ans = 2; ;
            for(int i=4;i<=n;i+=2)
            {
                ans*=2;
            }
            cout<<ans<<endl;
        }
        else
            cout<<"0"<<endl;

    }

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int, int> P;
#define pu push
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define rep(i, a, b) for(int i=(a);i<(b);i++)
#define repn(i, a, b) for(int i=(a);i<=(b);i++)
#define repv(i, v) for(auto i : v)
const int eps = 1e-7;
const int INF = 0x3f3f3f3f;
const int mod = 1000000007;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	int n;
	cin >> n;
	if(n % 2 == 0){
		cout << (1 << (n / 2)) << endl;
	} else {
		cout << "0" << endl;
	}
}

#pragma comment(linker, "/stack:20000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
#include <bits/stdc++.h>
#define fi first
#define se second
#define sz size()
#define ll long long
#define ld long double
#define ull unsigned long long
#define r0 return 0
#define y1 yy1
#define _____ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
using namespace std;
const int N = 1e5+5;
int n;
ll binpow(int a, int n){
	ll res = 1;
	while (n){
		if (n & 1)
			res *= a;
		a *= a;
		n /= 2;
	}
	return res;
}
int main (){ _____
	cin >> n;
	if (n & 1)
		cout << 0;
	else
		cout << binpow (2, n / 2);
	r0;
}

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <Windows.h>
#include <string>
#include <set>
#include <bitset>
#include <vector>
#include <stack>
#include <map>
#include <queue>
#include <ctime>
#include <cassert>
using namespace std;

#define ll int long long
const int mod = 1000000000 + 7;
long long numb(int a) {
	long long m = 1;
	while (a--) {
		m *= 2;
	}
	return m;
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int  n;
	cin >> n;
	if (n % 2 == 0) {
		cout << numb(n / 2);
	}
	else cout << 0;

	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long int n;
	cin>>n;
	if(n%2==0)
	{
	cout<<(1<<n/2)<<endl;
}
	else
	cout<<0<<endl;
	return 0;
}

#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <string.h>
using namespace std;

int main(){
	int n, ans = 1;
	cin >> n;
	if(n % 2 == 0){
		n /= 2;
		while(n--){
			ans *= 2;
		}
		cout << ans << endl;
	}
	else{
		cout << '0' << endl;
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
long long binpow(int a, int n){
	long long res = 1;
	while (n){
		if (n & 1){
			res *= a;
		}
		a *= a;
		n /= 2;
	}
	return res;
}
int main (){
	int n;
	cin >> n;
	if (n & 1){
		cout << 0;
	}
	else{
		cout << binpow(2, n / 2);
	}
	return 0;
}

#include <iostream>
#include <cmath>
using namespace std;
int n;
int main(){
	cin>>n;
	if(n%2==1) cout<<0<<endl;
	else{
		int ans=pow(2,n/2);
		cout<<ans<<endl;
	}
	return 0;
}

///                         .
///                     /   ))     |\         )               ).
///               c++. (\  ( `.    / )  (\   ( `.     ).     ( (
///               | |   ))  ) )   ( (   `.`.  ) )    ( (      ) )
///               | |  ( ( / _..----.._  ) | ( ( _..----.._  ( (
/// ,-.           | |---) V.'-------.. `-. )-/.-' ..------ `--) \._
/// | /===========| |  (   |      ) ( ``-.`\/'.-''           (   ) ``-._
/// | | / / / / / | |--------------------->  <-------------------------_>=-
/// | \===========| |                 ..-'./\.`-..                _,,-'
/// `-'           | |-------._------''_.-'----`-._``------_.-----'
///               | |         ``----''            ``----''
///               | |
///               c++`

///██╗ ██████╗ ██╗    ██████╗  ██████╗  ██████╗   ██████╗
///██║██╔═══██╗██║    ╚════██╗██╔═████╗ ╚════██╗ ██╔═████╗
///██║██║   ██║██║     █████╔╝██║██╔██║  █████╔╝ ██║██╔██║
///██║██║   ██║██║    ██╔═══╝ ████╔╝██║ ██╔═══╝  ████╔╝██║
///██║╚██████╔╝██║    ███████╗╚██████╔╝ ███████╗ ╚██████╔╝
///╚═╝ ╚═════╝ ╚═╝    ╚══════╝ ╚═════╝  ╚══════╝  ╚═════╝

#include<bits/stdc++.h>
#include<fstream>
#define ll long long
#define ld long double
#define pb push_back
#define pf push_front
#define fr first
#define sc second
#define mlojins cout.tie(NULL);
#define bzbz cin.tie(NULL);
#define CODER ios_base::sync_with_stdio(0)  ;
#define p_b pop_back
#define p_f pop_front
#define Qulukh
#define quluq return 0;
#define Zohiri_dzd
#define Mekh
#define Black_star
using namespace std ;

const ll N = 1e6 + 1;

map <ll , ll> mp , pm ;
map <char , ll> hs ;
deque <ll> v , vc , ve ,vv , vd ;
deque <char> p , pe ;
deque <string> ts , ss , st ;
deque <double> sd , ds ;
ll a , b , c , d , e , f , cnt , ans , r , n , l , x , y ;
ld q , t , cnt1 , cnt2 ;
string g , h , w , o , m , s ;
char z , u ;
bool re , rt ;
vector<pair < ll , string > > pr , rp , pp ;
map < pair < char , char > , ll > aw , wa ;

int main ()
{
    bzbz
    mlojins
    Qulukh
    Mekh
    CODER
    Zohiri_dzd
    Black_star
    ///freopen("input.txt" , "r" , stdin );
    ///freopen("output.txt", "w" , stdout );
    ///Author of the greatest code :: Murtazoev Alijon
    cin >> a ;
    if (a % 2 != 0)
    {
        cout << 0 ;
        return 0;
    }
    else
        cnt = pow (2 , a / 2) ;
    cout << cnt ;
}
///Mmavl studios
///Eco students

#include<stdio.h>
int main(){
int n,s=1,i;
scanf("%d", &n);
for(i=0;i<n/2;i++){
    s=s*2;
}
if(n&1) s=0;
printf("%d", s);
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long n;
    while(cin>>n)
    {
        long long m=1;
       if(n%2==0)
       {
           long long temp=n/2;
           while(temp--) m*=2;
           cout<<m<<endl;
       }
       else cout<<0<<endl;
    }
    return 0;
}

#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <math.h>
#include <cstdint>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << (n % 2 == 0 ? (int)pow(2, n / 2) : 0);
}

#include<bits/stdc++.h>
using namespace std;
#include<bits/stdc++.h>
using namespace std;
typedef     long long    ll;
typedef     vector<int> vi;
typedef     vector<long long> vl;
typedef     pair<int, int>pi;
typedef     pair<long long, long long>pl;
#define F   first
#define S   second
#define pb  push_back
#define     all(x)      x.begin() , x.end()
#define mp  make_pair
#define       FOR(i,a,b) for(i=a;i<=b;i++)
#define     mem(a)      memset(a , 0 ,sizeof a)
#define     memn(a)     memset(a , -1 ,sizeof a)
int main()
{

 int t;
 t=1;
 //cin>>t;
 while(t--)
 {
    int n;
    cin>>n;
    if(n%2==1) cout<<0<<endl;
    else cout<<(1<<(n/2))<<endl;
 }

}

#include<iostream>
using namespace std;
int main(){
	int n,ans=1;
	cin>>n;
	if(n%2==1){
		cout<<0;
	}
	else{
		for(int i=0;i<n/2;i++){
			ans*=2;
		}
		cout<<ans;
	}
	return 0;
}

#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
using namespace std;
int n;
int main() {
	cin >> n;
	if (n % 2 == 1) {
		cout << 0;
	}
	else {
		cout << (1<<n/2);
	}
}

#include <iostream>
// #include <algorithm>
// #include <cmath>
using namespace std;

long long fang(int num,int k) {
	long long r = 1;
	for (int i = 0; i < k; ++i) {
		r *= num;
	}
	return r;
}

int main () {

	int n;
	cin >> n;
	if (n >= 2 & n % 2 == 0) {
		cout << fang(2,n/2) << '\n';
	} else {
		cout << 0 << '\n';
	}

	return 0;
}

#include <iostream>
#include <algorithm>
#include <vector>
#include <unordered_set>
#include <string>

using namespace std;

int main()
{
	int n;
	cin >> n;
	if (n & 1) cout << 0;
	else cout << (1 << n / 2);
	/*system("pause");*/
	return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n;
	cin >> n;
	if(n%2==0)
	{
		int a = n/2;
		cout << (long long)pow(2,a)<<endl;
	}
	else cout << 0<<endl;
	return 0;
}

#include<stdio.h>
#include<math.h>
int main()
{
	int k,n;
	scanf("%d",&n);
	if(n%2==0)
	{
		n=n/2;
		k=pow(2,n);
	printf("%d",k);
	}
	else
	printf("0");
return 0;
}

#pragma warning(disable:4996)

#include <iostream>
#include <algorithm>
#include <cmath>
#include <stdio.h>
#include <cstring>
#include <cstdlib>

using namespace std;

long long pows(int a)
{
	if (a == 1)
		return 2;
	else
		return 2 * pows(a - 1);
}

int main()
{
	int n;
	cin >> n;
	if (n % 2 == 0)
		printf("%lld\n", pows((n / 2)));
//		cout << pow(2, (n / 2)) << endl;
	else
		cout << "0" << endl;

//	freopen("CON", "r", stdin);
//	system("pause");
	return 0;
}

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	int n = 0;
	cin >> n;
	if (n % 2 == 0)
		cout << (int) pow(2, n / 2);
	else
		cout << 0;
	return 0;
}

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>

using namespace std;

int main()
{
    int n;
    cin >> n;

    int temp = pow(2, n / 2);

    cout << (n % 2 == 0 ? temp : 0);

    return 0;
}

#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
ll k(ll a,ll n){
	ll res=1;
	while(n){
		if(n&1){
			res *= a;
		}
		n>>=1;
		a *= a;
	}
	return res;
}
int main(){
	int n;
	cin>>n;
	if(n&1) cout<<0<<endl;
	else {
		ll ans = k(2,n/2);
		cout<<ans<<endl;
	}
	return 0;
}

#include<iostream>

using namespace std;

int main()
{
    long long int n, res;
    cin >> n;
    if (n % 2 == 1)
        cout << 0;
    else {
        n = n / 2;
        res =pow(2, n);
        cout << res;
    }
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    long long int a;
    cin>>n;
    if(n%2==1)
    cout<<"0";
    else{
    a=pow(2,n/2);
    cout<<a;}
    return 0;
}

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	long long int n;
	cin >> n;

	if(n<2|| n%2!=0) cout << "0" << endl;
	else
	{
		cout << (long long int)pow(2,n/2)<< endl;
	}
}

#include <iostream>
struct TaskA {
    void solve() {
        int N; std::cin >> N;
	    if(N & 1) {std::cout << 0; return;}
	    N >>= 1;
	    int64_t ans = 1;
	    while(N--) ans <<= 1;
	    std::cout << ans;
    }
};
int main() {
	std::ios::sync_with_stdio(false); std::cin.tie(0);

	TaskA T;
	T.solve();

	return 0;
}

#include <iostream>
#include <iomanip>
#include <cmath>
#include <stack>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <climits>
#include <queue>
#include <set>
#include <fstream>
#include <list>
#include <deque>
#include <utility>
#define for0(i, n) for(int i = 0; i < n; i++)

using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	string s;
	long long n, k, m, tec;
	cin >> n;
	if (n % 2 == 1)
		cout << 0;
	else
	{
		int tec = n / 2;
		long long answer = 1;
		for (int i = 0; i < tec; i++)
			answer *= 2;
		cout << answer;
	}
		//system("pause");
}

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int n{};
    cin >> n;
    if (n%4 == 0)
        cout << to_string(int(pow(4, n/4)));
    else if(n%4 == 2)
        cout << to_string(int(pow(4, n/4)*2));
    else
        cout << 0;
    return 0;
}

/*---------------------------
    Author : Javed Ansari
    Date   : 28 June 2019
-----------------------------*/

#include<bits/stdc++.h>
#include<cstring>
#include<stdio.h>
using namespace std;
#define MOD1 1000000007
#define MOD2 1000000009
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define DB(x) cout<<#x<<"="<<x<<"\n";
#define DB2(x,y) cout<<#x<<"="<<x<<"  "<<#y<<"="<<y<<"\n";
#define SORTV(a) sort(a.begin(),a.end())
#define SORTA(a,n) sort(a,a+n)
#define TEST(t) ll t; cin>>t; while(t--)
#define PI 2*acos(0.0)
#define pb push_back
#define eb emplace_back
#define RFOR(i,n) for(int i=(n)-1;i>=0;i--)
#define endl cout<<"\n";
#define co cout<<
#define SS cout<<"*";
#define sc1(x) scanf("%lld",&x)
#define sc2(x,y) scanf("%lld %lld",&x,&y);
#define sc3(x,y,z) scanf("%lld %lld %lld",&x,&y,&z);
#define sc4(x,y,z,p) scanf("%lld %lld %lld %lld",&x,&y,&z,&p);
#define pr(n) printf("%lld\n",n)
#define UNIQUEA(a,n) unique(a,a+n)-a
#define UNIQUEV(v) v.erase(unique(v.begin(),v.end()),v.end())
#define FIND(str,word,startIndex) str.find(word,startIndex)
#define INSERT(index, str) str.insert(index,str)
#define REPLACE(str,start,count,new_str) str.replace(start,count,new_str)
#define COUNT(str,ch) count(str.begin(),str.end(),ch)
#define ERASE(str,index) str.erase(str.begin()+index)
#define MAXA(a,n) *max_element(a,a+n)
#define MINA(a,n) *min_element(a,a+n)
#define REV(v) reverse(v.begin(),v.end())
#define SUM(v) accumulate(v.begin(),v.end(),0)
#define MAXV(v) *max_element(v.begin(),v.end())
#define MINV(v) *min_element(v.begin(),v.end())
#define ull unsigned long long
#define ll long long int
#define ld long double
#define SIZE 100000001
#define INF 0x7fffffff

const int MX = 1e5+5;

int dx[] = {1,0,-1,0};
int dy[] = {0,1,0,-1};

int ddx[] = {1,0,-1,0,1,-1,-1,1};
int ddy[] = {0,1,0,-1,1,-1,1,-1};

vector <ll> g[MX];
vector <ll> v(MX);
int vis[MX];

void solveQues(){

	int n;
	cin>>n;

	if(n&1) cout<<0;
	else{
		ll p=pow(2,n/2);
		cout<<p;
	}

	return;
}

int main(){

	ios_base::sync_with_stdio(false);

	cin.tie(NULL);
	cout.tie(NULL);

	solveQues();

	return 0;
}

// In The Name Of God

/*  ki oomade?!  */
#include <bits/stdc++.h>

typedef long long ll;
typedef long double ld;

#define pp push
#define po pop()
#define pb push_back
#define pf push_front
#define pob pop_back()
#define pof pop_front()
#define I insert
#define E erase

#define F first
#define S second

#define mkp make_pair
#define pll pair <ll,ll>
#define smax(a, b) a = max(a, b)
#define smin(a, b) a = min(a, b)
#define all(a) a.begin(),a.end()

#define coutghat(x)   cout << tolower(x);
#define ashar(x)  cout << fixed << setprecision(x);
#define IOS ios_base::sync_with_stdio(false) , cin.tie(0), cout.tie(0);

#define LB(x) ((x) & -(x))
#define BIT(a , b) (((a) >> (b)) & 1)

/*==========================================================================*/
const int N = 1e5 + 100, M = 1e6 + 100, SQ = sqrt(2e5), LG = 23, base = 2, S = 1e2 + 100;
const ll mod = 1e9 + 7, MOD = 1e9 + 9;
const ll INF = 1e9, inf = 1e18, super_inf = ~0ull / 4;
/*==========================================================================*/

using namespace std;

ll n, dp[S];

int main()
{
	IOS;

	cin >> n;
	dp[1] = 0;
	dp[2] = 2;

	for(int i = 3; i <= n; i ++) dp[i] = (dp[i - 2] << 1);

	return cout << dp[n] << endl, 0;
}
/*
 ____   ___  ____    ____   ___   ___
|  _ \ / _ \|  _ \  |  _ \ / _ \ / _ \
| |_) | | | | |_) | | |_) | | | | | | |
|  __/| |_| |  _ <  |  _ <| |_| | |_| |
|_|    \___/|_| \_\ |_| \_\\___/ \___/
*/

// Filling Shapes - CodeForces
// https://codeforces.com/problemset/problem/1182/A

#include<bits/stdc++.h>
using namespace std;
#define ll long long

int main(){

    ll n;
    cin >> n;

    if(n & 1) cout << 0;
    else{
        ll x = pow(2, (n/2));
        cout << x;
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main ()
{ int n;
 cin>>n;
 if(n<3)
   cout<<0;
else
cout<<n;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if(n<2 || n%2 !=0)
	cout<<"0";
	else
	cout<<(n*2) ;
}

#include <iostream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <math.h>
#include <cstdint>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    int n;
    cin >> n;
    cout << (n % 2 == 0 ? pow(2, n / 2) : 0);
}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){

	#ifndef ONLINE_JUDGE
    	freopen("input", "r", stdin);
    	freopen("output", "w", stdout);
	#endif
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    cin>>n;

    if(n%2==1){
    	cout<<0<<endl;
    }
    cout<<pow(2,(ll)n/2)<<endl;
}

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
 int n; cin>>n;
 if(n%2!=0)
    cout<<0;
  else
  {
    cout<<pow(2,n/2);
  }
  return 0;

}

#include <iostream>
#include <cmath>
using namespace std;
int n;
int main(){
	cin>>n;
	if(n&2==1) cout<<1<<endl;
	else cout<<pow(2,n/2);
	return 0;
}

/******************************************************************************

Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, Java, PHP, Ruby, Perl,
C#, VB, Swift, Pascal, Fortran, Haskell, Objective-C, Assembly, HTML, CSS, JS, SQLite, Prolog.
Code, Compile, Run and Debug online from anywhere in world.

*******************************************************************************/
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
if(n%2!=0) cout<<0;
else cout<<pow(2,(n/2));
    return 0;
}

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n,ans;
int main()
{
    cin>>n;
    if(n<=1)
    {
        cout<<"0";
        return 0;
    }
    if(n&1) n++;
    cout<<n;
    return 0;
}

//
//  Problem A.cpp
//  Contests
//
//  Created by Giga Khizanishvili on 4/5/19.
//  Copyright © 2019 Giga Khizanishvili. All rights reserved.
//

// #include <bits/stdc++.h>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <sstream>

using namespace std;

/* Defines */
#define scanVec(vec) for(int i = 0; i < vec.size() ; i++){ cin>>vec[i]; }
#define printVec(v) for(int i = 0; i < vec.size() ; i++){ cout<<vec[i]<<" "; }
#define printlnVec(v) for(int i = 0; i < vec.size(); i++){ cout<<vec[i]<<endl; }

/* Constants */
const int  MOD = 1e9 + 7;
const int  N = 1e5 + 7;
const double PI = 3.141592653589793238462643383;

/* __________________________________________________________________________________ */

int main() {
    /* Read input from STDIN */
    int n; cin >> n;

    /* Print output to STDOUT */
    cout << pow(2, n/2) << endl;

    return 0;
}

/*
 int nTests; cin >> nTests;
 for(int iTest = 0; iTest < nTests; i++){

 }
 */

#include<bits/stdc++.h>
#define ll long long

using namespace std;

int main()
{
    int n;
    cin>>n;
    ll v = 3*n;
    if(v%6==0)
    {
        cout<<pow(2,v/6)<<endl;
    }
    else
    {
        cout<<0<<endl;
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;cin>>n;
	if(n%2==0)
		cout<<n<<endl;
	else
		cout<<"0\n";
}

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
    long long n;
       cin >> n;
       if ((n*3)% 2 == 0)
       {
           cout << pow(2,(n/2));
       }
       else cout << '0';

    return 0;
}

#include<bits/stdc++.h>
using namespace std;

#define for1(i,a,b) for(i=a;i<b;i++)
#define for2(i,a,b) for(i=a;i<b;i++)
const int N=3e5+5;

void jieti()
{
    int n;
    cin>>n;
    if(n%2==0)
        cout<<pow(2,n/2);
    else
        cout<<0;
}

int main()
{
    jieti();
    return 0;
}

//#include "pch.h"
#include <iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	if (n % 2 == 0) {
		cout << n << endl;
	}
	else {
		cout << 0 << endl;
	}
	return 0;
}

#include <bits/stdc++.h>
#include<algorithm>
#define ull unsigned long long int
#define ll long long int
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define mp make_pair
#define rep for(i=0;i<n;i++)
#define repr for(i=n-1;i>=0;i--)
#define pii pair<int,int>
#define pll pair<long long int, long long int>
#define l length()
#define inf 100000001
#define mod 1000000007
#define lb lower_bound
#define up upper_bound
#define rep1 for(i=1;i<n;i++)
#define vr vector
#define ef else if
#define SORT(A) sort(A.begin(), A.end());
#define SORTARR(arr) sort(arr, arr+n);
#define REVERSE(A) reverse(A.begin(), A.end());
using namespace std;
/*	input string with spaces
std::string str;
std::getline(std::cin >> std::ws, str);
*/
ll myXOR(ll x, ll y)
{
   return (x | y) & (~x | ~y);
}

int main()
{
	ll n;
	cin>>n;
	if(n==1)
	{
		cout<<"0";
		return 0;
	}
	if(n%2==1)
	{
		cout<<"0";
		return 0;
	}
	if(n==2)
	{
		cout<<"4";
		return 0;
	}
	cout<<n;
	return 0;

}

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

#define pe(a) cout<<a<<endl;
#define ps(a) cout<<a<<" ";
#define pb push_back

int main()
{
    int n;
    cin>>n;

    if(n==4)
    {
        cout<<n<<endl;
        return 0;
    }

    cout<<0<<endl;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{

 int n;
 cin>>n;
 if(n%2==0)
 {
     cout<<pow(2, n/2);
 }
 else cout<<0;

   return 0;
}

///*Bismillahir Rahmanir Rahim***///
///**Author Thasin Sheikh**///
/*    #include <regex>
    ...
    std::string string("hello $name");
    string = std::regex_replace(string, std::regex("\\$name"), "Somename");
    */
#include<bits/stdc++.h>
#include<regex>
#include<math.h>
using namespace std;
long long int po[1005][10];
vector<int>primes;
#define MAX 35000
#define makefast__  ios_base::sync_with_stdio(false);
using ll=long long int  ;
using dl =double;
int main()
{
    makefast__
    string ptr,str,uni;
    ll n,i,j,p,m,after,x,y,sum=0,b[100000],s;
    set<pair<ll,ll>>cv;
    char ch[101][101];
    set<ll>sc;
    cin>>n;
    x=n*3;
    if(x/3==1)
    {
        cout<<0<<endl;
    }
    else
        cout<<n<<endl;

}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){

	#ifndef ONLINE_JUDGE
    	freopen("input", "r", stdin);
    	freopen("output", "w", stdout);
	#endif
	ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n;
    cin>>n;

    if(n%2==1){
    	cout<<0<<endl;
    	return 0;
    }

    ll ans[60];

    ans[2]=2;
    ans[4]=4;

    for(int i=6;i<=60;i+=2){
    	ans[i]=2*ans[i-2]+ans[i-4];
    }
    cout<<ans[n]<<endl;
}

#include<bits/stdc++.h>
using namespace std;

int main()
{
    unsigned long long int n;
    cin>>n;
    if(n%2)
    cout<<"0";
    else
   cout<< (pow(2,n/2))*(1+(n%2)*(n/2));
   return 0;
}

#include<iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;

     if(n%2==0)
     {
         cout<<n;
     }
     else
     {
         cout<<"0";
     }

     return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long int i,j,k,n;
    cin>>n;
    if(n%2)
    {
        cout<<0;

    }
    else
    cout<<pow(2,n/2);
      return 0;
}

#include<iostream>
#include<vector>
#include<bitset>
#include<string>
#include<cmath>
#include<algorithm>
#include<stack>
#include<list>
#include<queue>
#include<map>
using namespace std;

int main(){
   int n; cin>>n;
   int cnt=0;
   if(n%2!=0){
     cout<<0<<endl;
     return 0;
   }
   else{
       cnt=n/2;
   }
   cout<<pow(2,cnt)<<endl;
   return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define long long long
#define endl "\n"

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    long int  n;
    cin>>n;

    long int ans = (n/2) * 2;
    cout<<ans;
    return 0;
}

#include<bits/stdc++.h>
#define fora(i,a,b) for(int i=a,Wub=b;i<Wub;++i)
#define ford(i,a,b) for(int i=a,Wub=b;i>=Wub;--i)
#define SPEEDIO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define MAX 9999992
using namespace std;
typedef long long ll;

int main(){//SPEEDIO
    ll n;
    cin>>n;
    if(n==1)cout<<"0\n";
    else {
        if(n%2==0)cout<<(1LL<<(n/2))<<"\n";
        else cout<<(1LL<<(n/2 + 1))<<"\n";
    }
    return 0;
}

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    long long n;
    long long summ = 4;
    cin >> n;
    if ( n%2 == 1 ) cout << 0;
    else
    {
        n /= 4;
        for ( int i = 1; i < n; i++ )
            summ = summ*4;
    }
    cout << summ;
    return 0;
}

#include<bits/stdc++.h>
#define inf 0x3f3f
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define lli long long int
#define pb push_back
#define mp make_pair
#define mod 1000000007
#define f first
#define s second
#define typedef vector<lli> vl
#define typedef map<lli,lli> ml
#define typedef pair<lli,lli> pl
using namespace std;
vector<int>g[100007];
map<string,int>m;
int main()
{
    fast;
    int n;
    cin>>n;
    if(n%2!=0)
        cout<<0;
    else
        cout<<(n/2)*2<<endl;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if(n%2!=0) cout<<"0";
	else  cout<<pow(2,n/2);
}

#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
if(n%2==0)
cout<<n;
else
cout<<0;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int fact(int n);

int ncr(int n, int r)
{
    return fact(n) / (fact(r) * fact(n - r));
}

int fact(int n)
{
    int res = 1;
    for (int i = 2; i <= n; i++)
        res = res * i;
    return res;
}
int main()
{
    int n; cin >> n;
    if(n%2==0){
        int a=n/4;
        int b=(n%4)/2;
        int ans=0;
        for(int i=0;i<=a;i++){
            ans+=ncr(a,i)*pow(3,i);
        }
        if(b){
            ans*=2;
        }
        cout << ans << endl;
    }
    else cout << 0 << endl;
}

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n&1) cout<<0<<endl;
	else cout<<n<<endl;
	return 0;
}

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <algorithm>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <string>
#define ll long long
using namespace std;
const int maxn = 5 * 1e5;
int n, m, k, x, s, q;
multiset <int> a, b;
vector <int> aska, askb;
int main()
{
	cin >> n;
	if (n % 2)
		cout << 0;
	else
		cout << n;
	return 0;
}

#include <bits/stdc++.h>
#define fr first
#define se second
#define r_0 return 0
#define ll long long
#define pb push_back
#define TIME ios_base::sync_with_stdio(0);
using namespace std;

const long long N = 1e4 + 7;
const long long INF = 1e9 + 1;
const long long mod = 1e9 + 7;

ll n, m, a[N], cnt, x;
int main()
{
    cin >> n;
    if( n%2==0 )
        cout<<n;
    else
        cout<<n-1;
}

#pragma warning(disable:4996)

#include <iostream>
#include <algorithm>
#include <cmath>
#include <stdio.h>
#include <cstring>
#include <cstdlib>

using namespace std;

int main()
{
	int n;
	cin >> n;
	if (n % 2 == 0)
		cout << n << endl;
	else
		cout << "0" << endl;

//	freopen("CON", "r", stdin);
//	system("pause");
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n;
	cin >> n;
    if (n%2) cout << "0/n";
	else cout << (int)pow(2,n/2);
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin>>n;
	if(n%2){
		cout<<0;
		return 0;
	}

	cout<<pow(2, n/2);
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	if(n<2 || n%2 !=0)
	cout<<"0";
	else
	cout<<(n/2) ;
}

#include <bits/stdc++.h>
using namespace std;

int main(){

    int n;
    cin>>n;
    if(n%2==0){
        cout<<n;
    }else
        cout<<"0";

    return 0;
}

#pragma comment(linker, "/stack:20000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
#include <bits/stdc++.h>
#define fi first
#define se second
#define sz size()
#define ll long long
#define ld long double
#define ull unsigned long long
#define r0 return 0
#define y1 yy1
#define _____ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen("input.txt","r",stdin); freopen("output.txt","w",stdout);
using namespace std;
const int N = 1e5+5;
int n;
int main (){ _____
	cin >> n;
	if (n & 1)
		--n;
	cout << n / 2;
	r0;
}

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> PII;
typedef pair<ll, int> PILL;
typedef pair<ll, ll> PLL;

const int MAX_N = 2750131;

const ll MOD = 1000000007LL;

ll power_modulo_fast(ll a, ll b) {
	ll i;
	ll result = 1;
	ll x = a%MOD;

	for (i=1; i<=b; i<<=1) {
		x %= MOD;
		if ((b&i) != 0) {
			result *= x;
			result %= MOD;
		}
		x *= x;
	}

	return result;
}

void solve() {

}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin >> n;
    if (n%2 == 1) {
        cout << 0;
    } else {
        cout << n;
    }

    return 0;
}

#include <bits/stdc++.h>
#define int int64_t
using namespace std;

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n;		cin >> n;
	if(n%2 == 0)
		cout << pow(2,n/2) << '\n';
	else
		cout << '0' << '\n';

	return 0;
}

#include<iostream>
using namespace std;

int main() {
	int n;
	cin >> n;
	if (n % 2 == 0)
		cout << (double)pow((double)2,n/2) <<endl;
	else
		cout << '0'<<endl;

	return 0;
}

#include<bits/stdc++.h>
using namespace std;

#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define boost ios_base::sync_with_stdio(false);cin.tie(NULL);

#define endl "\n"
#define ll long long
#define int long long

#define pb push_back
#define mp make_pair

#define pii pair<int,int>
#define msi map<string,int>
#define vi vector<int>

#define trace1(x)                cerr<<#x<<": "<<x<<endl
#define trace2(x, y)             cerr<<#x<<": "<<x<<" | "<<#y<<": "<<y<<endl
#define trace3(x, y, z)          cerr<<#x<<":" <<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl
#define trace4(a, b, c, d)       cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl
#define trace5(a, b, c, d, e)    cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<endl
#define trace6(a, b, c, d, e, f) cerr<<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<< ": "<<e<<" | "<<#f<<": "<<f<<endl
#define testcases int testcases;cin>>testcases; while(testcases--)

#define INF INT_MAX

#define REP(i,a,b) for(int i=a;i<=b;i++)
#define REP1(i,a,b) for(int i=a;i<b;i++)

const int N=1e5+5;

bool rev(int x,int y)
{
    return x>y;
}

bool sortinrev(const pair<int,int> &a,
               const pair<int,int> &b)
{
       return (a.first > b.first);
}

int vec_sum(vector<int> &v){
    int init_sum=0;
    return accumulate(v.begin(),v.end(),init_sum);
}

int modulo(int x,int N){
    return (x % N + N) %N;
}

int max(int a,int b)
{
    if(a>=b)
        return a;
    else
        return b;
}
int min(int a,int b)
{
    if(a<=b)
        return a;
    else
        return b;
}
ll diff(ll a,ll b)
{
    if(a>=b)
        return a-b;
    else
        return b-a;
}
void pairsort(int a[], int b[], ll n)
{
    pair<int, int> pairt[n];
    for (int i = 0; i < n; i++)
    {
        pairt[i].first = a[i];
        pairt[i].second = b[i];
    }

    sort(pairt, pairt + n);

    for (int i = 0; i < n; i++)
    {
        a[i] = pairt[i].first;
        b[i] = pairt[i].second;
    }
}
ll gcd(ll a, ll b)
{
    if (b == 0)
        return a;
    return gcd(b, a % b);
}
int isPrime(int n)
{
    if(n < 2)
        return 0;
    if(n < 4)
        return 1;
    if(n % 2 == 0 or n % 3 == 0)
        return 0;
    for(int i = 5; i*i <= n; i += 6)
        if(n % i == 0 or n % (i+2) == 0)
            return 0;
    return 1;
}
long long C(int n, int r) {
    if(r > n - r) r = n - r;
    long long ans = 1;
    int i;
    for(i = 1; i <= r; i++) {
        ans *= n - r + i;
        ans /= i;
    }

    return ans;
}
ll mod = 1e9+7;
ll modexpo(ll x,ll p)
{
    ll res = 1;
    x = x%mod;
    while(p)
    {
        if(p%2)
            res = res * x;
        p >>= 1;
        x = x*x % mod;
        res %= mod;
    }
    return res;
}

uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m)
{
  long double x;
  uint64_t c;
  int64_t r;
  if (a >= m) a %= m;
  if (b >= m) b %= m;
  x = a;
  c = x * b / m;
  r = (int64_t)(a * b - c * m) % (int64_t)m;
  return r < 0 ? r + m : r;
}

int32_t main()
{
    #ifndef ONLINE_JUDGE
    // for getting input from input.txt
    freopen("input.txt", "r", stdin);
    // for writing output to output.txt
    //freopen("output.txt", "w", stdout);
    #endif

    IOS

	int n;
	cin>>n;

	if(n%2==0)
		cout<<n;
	else
		cout<<0;

    return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
#ifdef _DEBUG
	freopen("input.txt", "rt", stdin);
	freopen("output.txt", "wt", stdout);
#endif
	int n;
	cin >> n;
	if (n % 2 != 0) cout << "0";
	else cout << pow(2, n / 2);
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define llu unsigned long long
#define eb emplace_back
#define pb push_back
#define mp make_pair
#define ext exit(0)
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define newl printf("\n")
#define nl '\n'
#define endl '\n'
#define sci(x) scanf("%d",&(x))
#define scll(x) scanf("%lld",&(x))
#define sci2(x,y) scanf("%d %d",&(x),&(y))
#define loop(x,y) for(int itr = (x); itr <= (y); itr++)
#define fora(x) for(int itr = 0; itr < (x); itr++)
#define F first
#define S second
#define mset0(x) memset((x), 0, sizeof((x)));
#define mset1(x) memset((x), -1, sizeof((x)));
#define all(x) (x).begin(),(x).end()
#define pqmin(x) priority_queue<x, vector<x>, greater<x> >
#define pqmax(x) priority_queue<x>
#define sortd(x) sort(all(x), greater<int>())
#define vi vector<int>
#define pii pair<int,int>
#define mpii map<int,int>
#define elif else if
#define debug(x) cerr << "Debug: " << x << '\n';
#define pi 3.14159265358979323846D
#define gcd(x,y) __gcd(x,y)
#define lcm(x,y) __lcm(x,y)
#define fact(x) factorial(x)
template <typename type> type __lcm(type n1,type n2){return n1*(n2/gcd(n1,n2));}
ll nCr(int n, int r)
{
    int f1 = r, f2 = n-r;
    if(f2 > f1) swap(f2,f1);
    ll result = 1;
    for(int i = 1; i <= f2; i++)
    {
        result *= (i+f1);
        result /= i;
    }
    return result;
}
ll nPr(int n, int r, ll mod = 0)
{
    ll result = 1;
    for(int i = n-r+1; i <= n; i++) {result *= i; if(mod) result %= mod;}
    return result;
}
ll factorial(int n, ll modulo = 0)
{
    if(n == 0) return 1;
    if(modulo) return (n*factorial(n-1))%modulo;
    else return n*factorial(n-1);
}
void io_txt()
{
    #ifndef ONLINE_JUDGE
    //freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
}
/// I am done with macro ///

#define MOD 10000007
#define MAX 1000000
void f();
int main()
{
    //fastIO;
    //io_txt();
    int t = 1;
    //sci(t);
    loop(1,t)
    {
        //printf("Case %d: ", i);
        f();
    }
}

struct word
{
    string str;
    int vow;
    bool operator<(const word &obj) const
    {
        return vow < obj.vow;
    }
};

void f()
{
    ll n;
    cin >> n;
    if(n%2 == 1) cout << 0;
    else
    {
        cout << nPr(n, 2)/3;
    }
}

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int n{};
    cin >> n;
    if (n%4 == 0)
        cout << to_string(int(pow(4, n/4)));
    else
        cout << 0;
    return 0;
}

#include <bits/stdc++.h>

using namespace std;

#define forn(i, n) for(int i = 0; i < int(n); ++i)
#define for1(i, n) for(int i = 1; i <= int(n); ++i)
#define ford(i, n) for(int i = int(n) - 1; i >= 0; --i)
#define fore(i, l, r) for(int i = int(l); i < int(r); ++i)
#define forit(i, v) for(typeof((v).begin()) i = (v).begin(); i != (v).end(); ++i)
#define sz(v) int((v).size())
#define all(v) (v).begin(), (v).end()
#define pb push_back
#define X first
#define Y second
#define mp make_pair
template<typename T> inline T abs(T a){ return ((a < 0) ? -a : a); }
template<typename T> inline T sqr(T a){ return a * a; }

typedef long long li;
typedef long double ld;
typedef pair<int, int> pt;

bool sortbysec(const pair<int,int> &a,
              const pair<int,int> &b)
{
    return (a.X < b.X);
}

const int INF = (int)1E9 + 7;
const ld EPS = 1E-9;
const ld PI = 3.1415926535897932384626433832795;
//void dfs(int l){
//    used[l]=1;
//    for(int i = 0; i < n; ++i){
//        if(used[i]==0&&v[i][l]==1){
//            result++;
//            dfs(i);
//        }
//    }
//}

int main() {
    int n;
    cin>>n;
    if(n%2==0){cout<<pow(2,n/2);return 0;}
    cout<<0;
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> PII;
typedef pair<ll, int> PILL;
typedef pair<ll, ll> PLL;

const int MAX_N = 2750131;

const ll MOD = 1000000007LL;

ll power_modulo_fast(ll a, ll b) {
	ll i;
	ll result = 1;
	ll x = a%MOD;

	for (i=1; i<=b; i<<=1) {
		x %= MOD;
		if ((b&i) != 0) {
			result *= x;
			result %= MOD;
		}
		x *= x;
	}

	return result;
}

void solve() {

}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin >> n;
    if (n%2 == 1) {
        cout << 0;
    } else {
        cout << pow(2, n/2);
    }

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
long long n;
main()
{
	cin >>n;

	if (n%2==0)
		cout <<pow(2, n/2)<<endl;
	else
		cout <<0<<endl;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin>>n;

    if(n==0||n==1||n%2)cout<<"0";

    else {
        cout<<n;
    }

}

#include <iostream>
using namespace std;
int main() {
    int n;
    cin>>n;

    if(n%2==0)
    {
        cout<<n;
    }
    else
    {
        cout<<0;
    }

    return 0;
}

#include <bits/stdc++.h>
#define ll long long int
#define vi vector<int>
#define vll vector<ll>
#define vvi vector < vi >
#define pii pair<int,int>
#define pll pair<long long, long long>
#define mod 1000000007
#define inf 9999999999;
#define all(c) c.begin(),c.end()
#define mp(x,y) make_pair(x,y)
#define pb push_back
#define f first
#define s second
#define pi 3.141592653589793238
using namespace std;

int main()
{
	std::ios::sync_with_stdio(false);

	ll n;
	cin >> n;
	if(n%2==1) cout << "0\n";
	else
	{
		cout << 4 << endl;
	}

	return 0;
}

/********   All Required Header Files ********/
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <queue>
#include <deque>
#include <bitset>
#include <iterator>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <functional>
#include <numeric>
#include <utility>
#include <limits>
#include <time.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>

using namespace std;

/*******  All Required define Pre-Processors and typedef Constants *******/
#define SCD(t) scanf("%d",&t)
#define SCLD(t) scanf("%ld",&t)
#define SCLLD(t) scanf("%lld",&t)
#define SCC(t) scanf("%c",&t)
#define SCS(t) scanf("%s",t)
#define SCF(t) scanf("%f",&t)
#define SCLF(t) scanf("%lf",&t)
#define MEM(a, b) memset(a, (b), sizeof(a))
#define FOR(i, j, k, in) for (int i=j ; i<k ; i+=in)
#define RFOR(i, j, k, in) for (int i=j ; i>=k ; i-=in)
#define REP(i, j) FOR(i, 0, j, 1)
#define RREP(i, j) RFOR(i, j, 0, 1)
#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++)
#define IN(A, B, C) assert( B <= A && A <= C)
#define MP make_pair
#define PB push_back
#define INF (int)1e9
#define EPS 1e-9
#define PI 3.1415926535897932384626433832795
#define MOD 1000000007
#define read(type) readInt<type>()
const double pi=acos(-1.0);
typedef pair<int, int> PII;
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<PII> VII;
typedef vector<VI> VVI;
typedef map<int,int> MPII;
typedef set<int> SETI;
typedef multiset<int> MSETI;
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int  uint64;

/****** Template of some basic operations *****/
template<typename T, typename U> inline void amin(T &x, U y) { if(y < x) x = y; }
template<typename T, typename U> inline void amax(T &x, U y) { if(x < y) x = y; }
/**********************************************/

/****** Template of Fast I/O Methods *********/
template <typename T> inline void write(T x)
{
    int i = 20;
    char buf[21];
    // buf[10] = 0;
    buf[20] = '\n';

    do
    {
        buf[--i] = x % 10 + '0';
        x/= 10;
    }while(x);
    do
    {
        putchar(buf[i]);
    } while (buf[i++] != '\n');
}

//template <typename T> inline T readInt()
//{
//    T n=0,s=1;
//    char p=getchar();
//    if(p=='-')
//        s=-1;
//    while((p<'0'or p>'9') && (p!=EOF&&p!='-'))
//        p=getchar();
//    if(p=='-')
//        s=-1,p=getchar();
//    while(p>='0'&&p<='9') {
//        n = (n<< 3) + (n<< 1) + (p - '0');
//        p=getchar();
//    }
//
//    return n*s;
//}
///************************************/

/******* Debugging Class Template *******/
#define DEBUG

#ifdef DEBUG

    #define debug(args...)     (Debugger()) , args

    class Debugger
    {
        public:
        Debugger(const std::string& _separator = " - ") :
        first(true), separator(_separator){}

        template<typename ObjectType> Debugger& operator , (const ObjectType& v)
        {
            if(!first)
                std:cerr << separator;
            std::cerr << v;
            first = false;
            return *this;
        }
        ~Debugger() {  std:cerr << endl;}

        private:
        bool first;
        std::string separator;
    };

#else
    #define debug(args...)                  // Just strip off all debug tokens
#endif

/**************************************/

/******** User-defined Function *******/

/**************************************/

/********** Main()  function **********/
void run();
int main()
{

    #ifndef ONLINE_JUDGE
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    #endif

    run();
    return 0;
}
/********  Main() Ends Here *************/
void run()
{
    int n;
    cin >> n;
    if(n<=1)
        cout<<0<<endl;
    else cout<<n<<endl;
}

#include <iostream>

using namespace std;

int getans(int x){

    if(x<=1){
        return 0;
    }

    if(x==2){
        return 2;
    }
    return getans(x-1)+getans(x-2);
}

int main()
{

    cout<<getans(8);

    return 0;
}

#include <iostream>
#include<cmath>

using namespace std;
int main () {
   int n;
   cin>>n;
   if(n%2){
   	cout<<0;
   }
   else {
   	cout<<pow(2,n/2);
   }
   return 0;

}

#include<stdio.h>
#define ll long long int
#include<bits/stdc++.h>
using namespace std;

int main()
{
    ll n;
    cin>>n;
    ll x=pow(4,n/4);
    if(n%2)
        cout<<"0";
    else
        cout<<x;
}

#include<bits/stdc++.h>
#define mp make_pair
#define fi first
#define se second
#define debug(x) cerr<<#x<<" = "<<(x)<<endl
#define eps 1e-8
#define pi acos(-1.0)
using namespace std;
void test(){cerr<<"\n";}
template<typename T,typename... Args>void test(T x,Args... args){cerr<<x<<" ";test(args...);}
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int MAXN=(int)1e5+5;
const int MOD=(int)1e9+7;
ll dp[MAXN];
int main()
{
    dp[0]=1;
    for(int i=2;i<=40;i++){
        dp[i]+=2*dp[i-2];
        if(i>=4)dp[i]+=dp[i-4];
    }
    int n;
    cin>>n;
    cout<<dp[n]<<"\n";
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,i,j;
    cin >> n;
    i=3*n;
    if(i%6==0)
        cout << n;
    else
    {
            cout <<"0";
    }

}

#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
#define watch(x) cout<<(#x)<<" is "<<x<<endl;
#define ll long long int
#define pb push_back
#define in insert
#define mp make_pair
#define F first
#define S second
#define N 1000000
#define MOD 1000000007
#define PI acos(-1)
int main()
{
	IOS
	ll n;
	cin>>n;
	if(n%2==0)
	{
		cout<<pow(2,n/2);
	}
	else
	{
		cout<<"0";
	}
	return 0;
}

#include<bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
#define watch(x) cout<<(#x)<<" is "<<x<<endl;
#define ll long long int
#define pb push_back
#define in insert
#define mp make_pair
#define F first
#define S second
#define N 1000000
#define MOD 1000000007
#define PI acos(-1)
int main()
{
	IOS
	ll n;
	cin>>n;
	if(n==2)
	cout<<"0";
	else if(n%2==0)
	{
		cout<<pow(2,n/2);
	}
	else
	{
		cout<<"0";
	}
	return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n<2) cout<<"0"; else
        if(n%2==0) cout<<n/2; else cout<<(n-1)/2;
}

// Example program
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n,a,b;
    cin >>n;
    b=n*3;
    if(n==1)
    {
        cout << "0";
        return 0;
    }
  //  cout << b << " ";

        cout << b/3 << endl;

}

#include <iostream>

using namespace std;

int main()
{
  int n;
  cin>>n;
  if(n%2==0)
    cout<<n;
  else
    cout<<n-1;
}

#include<bits/stdc++.h>
//#define int long long
#define scf(n) scanf("%lld",&n)
#define rep1(n) for(int i=1;i<=n;i++)
#define prf(n) printf("%lld",n)
#define sci(n) scanf("%lld",&n)
#define pri(n) printf("%lld",n)

#define nl printf("\n")
#define spc printf(" ")
#define file freopen("in.txt","rt",stdin)
#define pii pair<int,int>
#define piii pair<pii,int>
#define MOD 10000007
using namespace std;

/*bool sortBySec(const pair<int,int> &a,const pair<int,int> &b)
{
    return (a.second < b.second);
}*/
void faster(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
}
/******************************************/

int32_t main()
{
//    /***********************************/
//    #ifdef ONPC
//      freopen("in.txt", "r", stdin);
//      freopen("out.txt", "w", stdout);
//    #endif
//    faster();
//    /*********************************/

     int n;
    // sci(n);
    cin>>n;
     if(n%2==1)
     {
         printf("0\n");
     }
     else
        cout<<ceil(pow(2,n/2))<<endl;

    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
	long long int n;
	cin>>n;
	if(n%2){
		cout<<0;
		return 0;
	}

	cout<<pow(2, n/2);
	return 0;
}

#include<bits/stdc++.h>
#include<algorithm>
#include<string>
#include<vector>
#include<queue>
#include<string.h>
#include<unordered_map>
#include<map>
#include<unordered_set>
#include<set>
#include<math.h>

using namespace std;

#define llt             long long int
#define ff              first
#define ss              second
#define pb              push_back
#define mp              make_pair
#define pii             pair<int,int>
#define pll             pair<llt,llt>
#define vi              vector<int>
#define vl              vector<ll>
#define vii             vector<pii>
#define vll             vector<pll>
#define mii             map<int,int>
#define pqb             priority_queue<int>
#define pqs             priority_queue<int,vector<int>,greater<int>>
#define setbits(x)      __builtin_popcountll(x)
#define zrobits(x)      __builtin_ctzll(x)
#define mod             1000000007 //1e9+7
#define inf             1e18
#define ps(x,y)         fixed<<setprecision(y)<<x
#define mk(arr,n,type)  type *arr=new type[n];
#define w(x)            int x; cin>>x; while(x--)
#define rep(k,n)        for(int i=k;i<n;i++)
#define clr(x)          memset(x, 0, sizeof(x))
#define PI              3.1415926535897932384626

void solve()
{
	llt n;
	cin>>n;
	if(n==1)
		cout<<"0"<<endl;
	if(n%2==0)
	{
		cout<<pow(2,(n/2))<<endl;
	}
	else
		cout<<"0"<<endl;

}
int main()
{
	#ifndef ONLINE_JUDGE
	 freopen("input.txt","r",stdin);
	 freopen("output.txt","w",stdout);
	 #endif

	std::ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

	int t=1;
   // cin>>t;

    while(t--)
        solve();

    return 0;

}

#include <bits/stdc++.h>
typedef long long ll;
#define tc                                                                     \
  int tc;                                                                      \
  cin >> tc;                                                                   \
  while (tc--)
#define REP(i, a, b) for (int i = a; i < b; i++)
#define REPO(i, b, a) for (int i = b - 1; i >= a; i--)
#define REPI(i, a, b) for (int i = a; i <= b; i++)
#define MOD 1000000007
ll fast_exp(ll base, ll exp) {
  ll res = 1;
  while (exp > 0) {
    if (exp % 2 == 1)
      res = (res * base) % MOD;
    base = (base * base) % MOD;
    exp /= 2;
  }
  return res;
}
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
  freopen("output.txt", "w", stderr);
#endif
  int n;
  cin >> n;
  int k = 3;
  if (n < 3) {
    cout << 0;
  } else
    cout << (3 * n) / k;
  return 0;
}

#include<bits/stdc++.h>
using namespace std;

#define ll long long int
#define pi 3.141592653589793238
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define mod 1000000007

void solve()
{
    int n;
    cin>>n;
    cout<<(n/2)*2;
    return;
}

int main()
{
	FAST;
    ll q;
    // cin>>q;
    while(q--)
        solve();
	return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main ()
{
	int n;
	cin>>n;

	int ans = n/2;

	cout<<ans*2;
}

#include<bits/stdc++.h>
#define     ll          long long
#define     MOD         10e9+7
#define     pb          push_back
#define     vll         vector<long long>
#define     vi          vector<int>
#define     vl          vector<long>
#define     all(a)      (a).begin(),(a).end()
#define     rep(i,a,b)  for(int i=a;i<b;i++)
#define     ios	      ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int dp[60];

int main(){

      ios
      dp[1] = 0;
      dp[2] = 2;
      int n;
      cin >> n;
      int flag = n/2;
      if(n==1) cout << dp[1] << endl;
      else cout << flag*dp[2] << endl;

}

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    long long n;
    cin >> n;
    if(n % 2 ==0)
    {
        n = n/2;
        cout << pow(2,n) << endl;
    }
    else
    {
        cout << 0 << endl;
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){

    int n;
    cin>>n;
    if(n%2==0)
    cout<<n<<endl;
    else
    cout<<0<<endl;

    return 0;

}

#include <bits/stdc++.h>

using namespace std;

const int MAXX = 62;
long long n, dp[MAXX];

int main() {
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	cin >> n;
	dp[1] = 0, dp[2] = 1;
	for(int i = 3; i < MAXX; i++)
		dp[i] = dp[i - 1] * 2;
	return cout << ((n & 1) ? 0 : dp[n]) << endl, 0;
}

// Author : RioTian
// Time : 20/11/10
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int main() {
    // freopen("in.txt", "r", stdin);
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    int n, ans = 0;
    if (n % 2 == 0) {
        n /= 2;
        ans = 1 << n;
    }
    cout << ans << endl;
}

#include <iostream>
#include <math.h>
using namespace std;
void main()
{
	int n;
	cin >> n;
	if (n % 2 == 0)
		cout << pow(2, n / 2);
	else
		cout << 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	int x=pow(2,n/2);
	cin>>n;
	if(n%2!=0)
	cout<<0;
	else
	{
		 cout<<x;

	}

}

#include <iostream>
#include <cmath>
using namespace std;
int main(){
    long long int n; cin>>n;
    if(n%2==1){cout<<0<<endl; return 0;}
    cout<<pow(2,n/2)<<endl;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long

const int N=500000;

int main()
{
    int n;
    cin>>n;
    cout<<n/2*2<<endl;
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int n;
int main(){
    cin>>n;
    if ( n%2==0){
    cout<<pow(2,n/2);
    }
    else{
        cout<<"0";
    }
}

#include <iostream>
 #include<cmath>

using namespace std;

int main()
{
    long int  n;
    cin>>n;
    if (n%2==0)
        cout<< pow(2,n/2);
    else
        cout<<0;

}

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<cstdlib>
#include<set>
#include<queue>
#include<stack>
#define PI acos(-1)
#define ll long long
using namespace std;
int n;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin >> n;
	if (n % 2 == 0) {
		cout << n << endl;
	}
	else {
		cout << "0"<<endl;
	}
	//system("pause");
	return 0;
}

#include <bits/stdc++.h>
typedef long long ll;
#define tc                                                                     \
  int tc;                                                                      \
  cin >> tc;                                                                   \
  while (tc--)
#define REP(i, a, b) for (int i = a; i < b; i++)
#define REPO(i, b, a) for (int i = b - 1; i >= a; i--)
#define REPI(i, a, b) for (int i = a; i <= b; i++)
#define MOD 1000000007
ll fast_exp(ll base, ll exp) {
  ll res = 1;
  while (exp > 0) {
    if (exp % 2 == 1)
      res = (res * base) % MOD;
    base = (base * base) % MOD;
    exp /= 2;
  }
  return res;
}
using namespace std;
int fact(int n) {
  if (n == 1 || n == 0)
    return 1;
  return (n)*fact(n - 1);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
  freopen("output.txt", "w", stderr);
#endif
  int n;
  cin >> n;
  if ((n * 3) % 6 != 0) {
    cout << 0;
  } else
    cout << pow(((n * 3) / 6), 2);
  return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
     int n;
     cin>>n;
     if(n%2==0)
          cout<<n<<endl;
     else
          cout<<0<<endl;
}

#include <bits/stdc++.h>

using namespace std;
#define li long long int

int main()
{
    li t=1;
    //cin>>t;
    while(t--)
    {
        li n;
        cin>>n;
        if(n%2==0)
        {
            cout<<n;
        }
        else
            cout<<n-1;
    }
    return 0;
}

using namespace std;
#include<bits/stdc++.h>
#define ll long long int
#define ull unsigned long long int
#define INFINITE 1e9 + 5
#define MOD 1000000007
int main()
{
    int num;
    cin>>num;
    if(num<2)
    {
        cout<<0;
    }
    else if(num>2&&num%2==0)
    {
        cout<<4;
    }
    else
    {
         cout<<0;
    }

}

#include<bits/stdc++.h>
using namespace  std;
int main()
{
    int n;
    cin>>n;
    if(n%2!=0)
    cout<<0;
    else
    cout<<n;
}

#include <iostream>
#include <cmath>
using namespace std;
int n;
int main(){
	cin>>n;
	if(n&2==1) cout<<1<<endl;
	else cout<<pow(2,n/2);
	return 0;
}

#include<iostream>
#include<math.h>
using namespace std;
typedef long long ll;
int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n;
	cin>>n;
	if (n%2) cout<<0;
	else cout<<pow(2, n/2);
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
string a;
int main()
{
	cin>>a;
	int len=a.size()-1;
	if((a[len]-'0')%2==1)
	{
		printf("0");
		return 0;
	}
	cout<<a;
	return 0;
}

    #include<bits/stdc++.h>
    using namespace std;
    int main()
        {
           long long int n ;
           cin>>n;
           if(n%2==1)cout<<0<<endl;
           else
            cout<<ceil(n/2.00)*2<<endl;

        }

#include<bits/stdc++.h>
#define PI 3.14159265358979323846
#define LL long long
#define N 100000007
#define MOD 10000007
#define MX numeric_limits<long long>::max();
#define MN numeric_limits<long long>::min();
#define READ(f) freopen(f, "r", stdin)
#define WRITE(f) freopen(f, "w", stdout)
#define FILL(v, n) fill(v.begin(), v.end(), n);
#define FAST_IO ios_base::sync_with_stdio(false),cin.tie(NULL)
#define PRINT(v) for(int i=0; i<v.size(); i++) cout<<v[i]<<" "; cout<<endl;
#define SCAN(v) for(int i=0; i<n; i++) { int temp; cin>>temp; v.push_back(temp); }
#define SORT(v) sort(v.begin(), v.end());

using namespace std;

int main()
{
    int n;
    cin >> n;

    if(n%2==0)
        cout<<n<<endl;
    else
        cout<<"0"<<endl;

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a;
cin>>n;
if(n%2==0)	{
  a=n/2;
  cout<<pow(2,a);
}

else
cout<<"0";
}

#include <bits/stdc++.h>

using namespace std;
inline void prep ()
{
  cin.tie (0);
  cin.sync_with_stdio (0);
};
//printf("%.12lf\n",mid);
// __builtin_popcount(int) count 1's in binary
int mod = 1000000007;

int mymod(int num){
  if (num< 0){
    if (mod == 1){
      return 0;
    }
    return mod-abs(num)%mod;
  }else{
    return num%mod;
  }
}

double eps = .0000000001;

int main ()
{
  prep ();
  // 2 make 3x2 one
  int n;
  cin >> n;
  if (n == 1){
      cout << 0;
  }else if (n == 2){
      cout << 1;
  }else if (n%3 == 0 && n%2 == 0 || n%3 == 2 && n%2 == 0){
      cout << (n*n/6)*2;
  }else if (n%3 == 1 && n%2 == 0 || n%3 == 0 && n%2 == 1){
      int sum = n*n;
      sum -= n;
      cout << (sum/6)*2;
  }else if (n%3 == 2 && n%2 == 1){
      int sum = n*n;
      sum -= n;
      sum += 2;
      cout << (sum/6)*2;
  }else if (n%3 == 1 && n%2 == 1){
      int sum = n*n;
      sum -= n*2;
      sum++;
      cout << (sum/6)*2;
  }

  return 0;
}
// in dp problems think: up until here, intervals, or "what if there's 1, 2, 3..."
// in math problems write out equations
// also in math problems to change multiplication/division to addition/subtraction use logs, add/subtract something to make the multiplication easier (like if it's 3*f(x)+2, change it to 3*(f(x)+1)-1)
// if printint pow function, put an (int) or (long long) next to it
// if checked everything check for bugs (like sorting wrong way or not putting a break in a loop)
// if n is 10^7 try brute force if the operations are simple
// if can't do dp do brute force/greedy
// to save time don't copy maps/vectors into variables if it already exists
// only use long long if need to
// if wrong on decimal problem, check if program rounds or if you can round to a certain amt of decimals
// if decimals too, if can subtract instead of divide
// in grid traversal problems check if doing sideways or not
// if TLE try to take away loop
// in recursion looking math problems look at things from the point of view of both sides (the start and the end sections of the recursion)
// think about how many possible answers there are to the problem
// try to set the answer to the problem and see if it's possible (like w/ binary search)
// if it makes it easier use +1 indexing
// think twice when writing things down that you're going to use later
// for conversions think if you can compute them w/ only one conversion
// if the problem involves two things moving at the same time, see if you can generalise it to just one thing moving (590/B) (1117/C)
// if nt think primes
// see if you can do a pattern of steps to achieve something (1148/C) (1119/C)
// for problems where you're searching for like a pair that requires something, if it's a yes/no prob, don't focus on individual elements if it's too long (593/B)
// if sub-interval requirements, try to reduce problem into prefix array problem (pairwise numbers) (1174/D)
// think from the end of the problem (if this is the result, what is an attribute of it?)
// if repeating action, if good for debugging use function
// read problems twice, think about problem, even if have solution keep thinking about a more optimal one
// for uva see constraints, check if have to use getline
// if permutations, see if you can just iterate over numbers (like if it's a perm of 10 numbers)
// for geom check if it could be on inside/outside if intersections

/***
	chauhan176's code

	DO WHATEVER IT TAKES!!!
	Nothing happens , nothing happens and then everything happens.
	But the thing is nothing happens in air:)-
***/
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long int
#define ld long double
#define fi first
#define se second
#define mod 1000000007
#define maxn 300005
#define all(v) v.begin(),v.end()
#define fastio ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define stringio cin.ignore(256, '\n')  //to take string input after taking integer inputs
#define go_t int t;cin>>t;for(int tt=1;tt<=t;tt++)
#define set_ar(arr,v) memset(arr,v,sizeof(arr))
#define trace2(x, y)             cout <<#x<<": "<<x<<" | "<<#y<<": "<<y<< endl;
#define trace3(x, y, z)          cout <<#x<<": "<<x<<" | "<<#y<<": "<<y<<" | "<<#z<<": "<<z<<endl;
#define trace4(a, b, c, d)       cout <<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<endl;
#define trace5(a, b, c, d, e)    cout <<#a<<": "<<a<<" | "<<#b<<": "<<b<<" | "<<#c<<": "<<c<<" | "<<#d<<": "<<d<<" | "<<#e<<": "<<e<<endl;

typedef pair<int,ll>pi;
const ll inf = 0x3f3f3f3f3f3f3f3fll;//4x10e18
const int maxx = INT_MAX;
#define PI 3.14159265
int main()
{
    fastio;
    int n;
    cin>>n;
    if(n%2==1)
    {
        cout<<0<<endl;
        return 0;
    }
    int ans = (n/2)*2;
    cout<<ans<<endl;
    return 0;
}

using namespace std;
#include<bits/stdc++.h>
#define ll long long int
#define ull unsigned long long int
#define INFINITE 1e9 + 5
#define MOD 1000000007
int main()
{
    int num;
    cin>>num;
    if(num<2)
    {
        cout<<0;
    }
    else if(num>2&&num%2==0)
    {
        cout<<(num/2)*2;
    }
    else
    {
         cout<<0;
    }

}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define mp make_pair
#define ii pair<int,int>
#define vii vector<ii>
#define vi vector<int>
#define F first
#define S second
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
#define fastio ios_base::sync_with_stdio(false),cin.tie(NULL),cout.tie(NULL);
void pe(){cout<<endl;}
template<class T1> void pe(T1 e){cout<<e<<endl;}
template<class T1,class T2> void pe(T1 e1,T2 e2){cout<<e1<<" "<<e2<<endl;}
template<class T1,class T2,class T3> void pe(T1 e1,T2 e2,T3 e3){cout<<e1<<" "<<e2<<" "<<e3<<endl;}
template<class T1,class T2,class T3,class T4> void pe(T1 e1,T2 e2,T3 e3,T4 e4){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<endl;}
template<class T1,class T2,class T3,class T4,class T5> void pe(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" "<<e5<<endl;}
template<class T1> void ps(T1 e){cout<<e<<" ";}
template<class T1,class T2> void ps(T1 e1,T2 e2){cout<<e1<<" "<<e2<<" ";}
template<class T1,class T2,class T3> void ps(T1 e1,T2 e2,T3 e3){cout<<e1<<" "<<e2<<" "<<e3<<" ";}
template<class T1,class T2,class T3,class T4> void ps(T1 e1,T2 e2,T3 e3,T4 e4){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" ";}
template<class T1,class T2,class T3,class T4,class T5> void ps(T1 e1,T2 e2,T3 e3,T4 e4,T5 e5){cout<<e1<<" "<<e2<<" "<<e3<<" "<<e4<<" "<<e5<<" ";}
int t;
void solve(){
	int n;cin>>n;
	if(n==0){
		pe(0);return;
	}
	if(n&1){
		pe(0);return;
	}
	pe(pow(2,n/2));
}
int main(){
	fastio
	//cin>>t;
	//while(t--)
	solve();
}