#include "bits/stdc++.h"
    using namespace std;
    
    int n;
    vector<int> v;
    multiset<int> dp[1<<18];
    int main(){
		cin>>n;
		for(int i=0;i<(1<<n);i++){
			int a;
			scanf("%d",&a);
			dp[i].insert(a);
		}
		for(int k=0;k<n;k++){
			for(int j=0;j<(1<<n);j++){
				if((j>>k)&1){
					for(auto el:dp[j^(1<<k)]){
						dp[j].insert(el);
					}
					while(dp[j].size()>2)dp[j].erase(dp[j].begin());
				}
			}
		}
		long long int aa=0;
		for(int j=1;j<(1<<n);j++){
			long long int ans=(*(dp[j].begin()))+(*(next(dp[j].begin())));
			aa=max(aa,ans);
			printf("%lld\n",aa);
		}
		return 0;
	}
