//#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector")
#include <bits/stdc++.h>
#include<set>
using namespace std;
#define ll long long
#define endl '\n'
#define pb push_back
#define ff first
#define ss second




#define si(x) int(x.size())
#define sum_all(a)     ( accumulate ((a).begin(), (a).end(), 0ll))
#define mine(a)    (*min_element((a).begin(), (a).end()))
#define maxe(a)    (*max_element((a).begin(), (a).end()))
#define mini(a)    ( min_element((a).begin(), (a).end()) - (a).begin())
#define maxi(a)    ( max_element((a).begin(), (a).end()) - (a).begin())



void solve()
{
 
  ll n ;
  cin >>n ;
  if(n==1)
  {
  	 cout << 1<< endl << 1 << endl; return ; 
  }
  if(n==2)
  {
  	 cout << 2 << endl << 1<< endl << 1 << endl; return ; 
  }
  vector<ll> f;
  f={1,1};
  while(f.back()<1e18)
  {
  	f.pb(f[si(f)-1]+f[si(f)-2]);
  }
  // for(ll i=0;i<5;i++) cout << f[i] << " "; 
  	// cout << endl;
  vector<ll> ans; 
vector<ll> temp;
  while(n>0)
  {
  	ll x=0;
    for(ll i=0;i<si(f);i++)
    {
      if(n>=f[i]) x=i; 
    }
    ans.pb(x+1);
    n-=f[x];
  }
  vector<ll> res;

  // for(ll i=0;i<si(ans);i++) cout << ans[i]<< endl;
  if(ans[0]%2==0)
  {
  	res.pb(2);
     for(ll i=1;i<ans[0];i++)
     {
     	if(i%2==1) res.pb(3); else res.pb(4);
     }
     vector<ll> fin;
     ll j=si(ans)-1;
     for(ll i=si(res)-1;i>=0;i--)
     {
       fin.pb(res[i]);
       if(j>=1 and ans[0]-ans[j]==i) 
       {
       	if(fin.back()==3)
       	  fin.pb(1);
       	else fin.pb(2);
       	j--;

       }

     }
     reverse(fin.begin(),fin.end());
     cout << si(fin) << endl; 
     for(ll i=0;i<si(fin);i++)
     {
     	cout <<fin[i] << endl ; 
     }
     
 
  }
  else
  	 {
  	 	res.pb(1);
     for(ll i=1;i<ans[0];i++)
     {
     	if(i%2==1) res.pb(4); else res.pb(3);
     }
      vector<ll> fin;
     ll j=si(ans)-1;
     for(ll i=si(res)-1;i>=0;i--)
     {
       fin.pb(res[i]);
       if(j>=1 and ans[0]-ans[j]==i) 
       {
       	if(fin.back()==3)
       	  fin.pb(1);
       	else fin.pb(2);
       	j--;

       }

     }
     reverse(fin.begin(),fin.end());
  
     cout << si(fin) << endl; 
     for(ll i=0;i<si(fin);i++)
     {
     	cout <<fin[i] << endl ; 
     }
  	 }

 
  

   
}


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



    //int t; cin >> t; while (t--)
    solve();

}

#include <bits/stdc++.h>
        #include <math.h>
    
        using namespace std;
        typedef long long ll;
        typedef unsigned long long ull;
        # define M_PI  3.14159265358979323846
    
    
        const int M=1e9+7;
        long long mod(long long x){
            return ((x%M + M)%M);
        }
        long long add(long long a, long long b){
            return mod(mod(a)+mod(b));
        }
        long long mul(long long a, long long b){
            return mod(mod(a)*mod(b));
        }
long long gcd(long long int a, long long int b)
{
  if (b == 0)
    return a;
  return gcd(b, a % b);
}
 
// Function to return LCM of two numbers 
long long lcm(int a, int b)
{
    return (a / gcd(a, b)) * b;
}
    
        ll modPow(ll a, ll b){
            if(b==0)
                return 1LL;
            if(b==1)
                return a%M;
            ll res=1;
            while(b){
                if(b%2==1)
                    res=mul(res,a);
                a=mul(a,a);
                b=b/2;
            }
            return res;
        }

void solve()
{
    int n;
    cin>>n;
    vector<int>v;
    for(int i=0;i<pow(2,n);i++)
    {
        int k;
        cin>>k;
        v.push_back(k);
    }
    int i1=0;
    int ml=0;
    int mr=0;
    int i2=0;
    for(int i=0;i<pow(2,n-1);i++)
    {
        ml=max(ml,v[i]);
        if(ml==v[i])
        {
            i1=i;
        }
    }
    for(int i=pow(2,n-1);i<pow(2,n);i++)
    {
        mr=max(mr,v[i]);
        if(mr==v[i])
        {
            i2=i;
        }
    }
    if(ml<mr)
    cout<<i1+1<<endl;
    else
    cout<<i2+1<<endl;
}

 int main(){
            ios::sync_with_stdio(0);
            cin.tie(0);
            cout.tie(0);
            cout<<fixed;
            cout<<setprecision(10);
            int t=1;
            // cin>>t;
            for(int i=1;i<=t;i++){
            //    cout<<"Case #"<<i<<": ";
                solve();
            }
            return 0;
        }
 