#include <bits/stdc++.h>
#define INT long
#define oo 987654321
#define OO 9999999987654321
#define MOD 998244353
using namespace std;

INT n, a[1030], b[1027][1030], m, x;
int g(int x, int y, int z)
{
    int ret = 0;
    for(int i = x ; i < x+z ; i++ )
        for(int j = y ; j < y+z ; j++ )
            ret += b[i][j]-b[i-1][j]-b[i][j-1]+b[i-1][j-1];
    return ret;
}
void f(int x, int y, int z)
{
    if( z == 0 ) return;
    a[z] = max( a[z], b[x+z-1][y+z-1]-b[x-1][y+z-1]-b[x+z-1][y-1]+b[x-1][y-1] );
    //a[z] = max( a[z], (INT)g(x, y, z) );
    f(x, y, z>>1);
    f(x+(z>>1), y, z>>1);
    f(x, y+(z>>1), z>>1);
    f(x+(z>>1), y+(z>>1), z>>1);
}
int main()
{
    ios::sync_with_stdio(false);
    freopen(".10.in","r",stdin);
    freopen(".10.out","w",stdout);
    cin>>n;
    x=n;
    for(int i = 1 ; i <= (1<<n) ; i++)
        for(int j = 1 ; j <= (1<<n) ; j++ )
        {
            cin>>b[i][j];
            if( i+j ) b[i][j] += b[i-1][j]+b[i][j-1]-b[i-1][j-1];
        }
    //f(1, 1, (1<<n));
    m = (1<<n);
    while( (1<<n) > 0 )
    {
        for(int i = 1 ; i <= m ; i++ )
        {
            if( i+(1<<n)-1 > m ) break;
            for(int j = 1 ; j <= m ; j++ )
            {
                if( j+(1<<n)-1 > m ) break;
                a[(1<<n)] = max(a[1<<n], b[i+(1<<n)-1][j+(1<<n)-1]-b[i-1][j+(1<<n)-1]-b[i+(1<<n)-1][j-1]+b[i-1][j-1]);
                //a[(1<<n)] = max(a[1<<n], (INT)g(i, j, 1<<n) );
            }
        }
        n--;
    }
    for(int i = (1<<x) ; i > 0 ; i>>=1 ) cout<<a[i]<<endl;
}
