#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define nl '\n'
#define int long long
void file()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
}
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
int dir = 0;
int n;
vector <vector <int> > v;
vector <vector <bool> > vv;
vector <int> v1;
void rec(int x, int y)
{
if (x >= n || y >= n || x < 0 || y < 0 || vv[x][y]) return;
vv[x][y] = 1;
//cout << v[x][y]<<" ";
v1.push_back(v[x][y]);
if (x + dx[dir] >= n || y + dy[dir] >= n || x + dx[dir] < 0 || y + dy[dir] < 0 || vv[x + dx[dir]][y + dy[dir]])
{
dir = (dir + 1) % 4;
}
rec(x + dx[dir], y + dy[dir]);
}
int kad(vector <int> v)
{
int mx = 0, sum = 0;
for (int i: v)
{
sum += i;
mx = max(mx, sum);
sum = max(sum, 0LL);
}
return mx;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
file();
//memset(dp, -1, sizeof(dp));
cin >> n;
v = vector <vector <int> >(n, vector <int>(n));
vv = vector <vector <bool> >(n, vector <bool>(n, false));
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> v[i][j];
int mx = 0;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 4; j++)
{
int x = 0, y = 0;
if (j == 0)
x = 0, y = 0, dir = 0;
else if (j == 1)
x = 0, y = n - 1, dir = 1;
else if (j == 2)
x = n - 1, y = n - 1, dir = 2;
else if (j == 3)
x = n - 1, y = 0, dir = 3;
vv = vector <vector <bool> >(n, vector <bool>(n, false));
v1.clear();
rec(x, y);
mx = max(mx, kad(v1));
}
swap(dx, dy);
}
cout << mx;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG5sICdcbicKI2RlZmluZSBpbnQgbG9uZyBsb25nCgp2b2lkIGZpbGUoKQp7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbi50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgp9CgppbnQgZHhbXSA9IHswLCAxLCAwLCAtMX07CmludCBkeVtdID0gezEsIDAsIC0xLCAwfTsKaW50IGRpciA9IDA7CmludCBuOwp2ZWN0b3IgPHZlY3RvciA8aW50PiA+IHY7CnZlY3RvciA8dmVjdG9yIDxib29sPiA+IHZ2Owp2ZWN0b3IgPGludD4gdjE7CgoKdm9pZCByZWMoaW50IHgsIGludCB5KQp7CiAgICBpZiAoeCA+PSBuIHx8IHkgPj0gbiB8fCB4IDwgMCB8fCB5IDwgMCB8fCB2dlt4XVt5XSkgcmV0dXJuOwogICAgdnZbeF1beV0gPSAxOwogICAgLy9jb3V0IDw8IHZbeF1beV08PCIgIjsKICAgIHYxLnB1c2hfYmFjayh2W3hdW3ldKTsKICAgIGlmICh4ICsgZHhbZGlyXSA+PSBuIHx8IHkgKyBkeVtkaXJdID49IG4gfHwgeCArIGR4W2Rpcl0gPCAwIHx8IHkgKyBkeVtkaXJdIDwgMCB8fCB2dlt4ICsgZHhbZGlyXV1beSArIGR5W2Rpcl1dKQogICAgewogICAgICAgIGRpciA9IChkaXIgKyAxKSAlIDQ7CiAgICB9CgogICAgcmVjKHggKyBkeFtkaXJdLCB5ICsgZHlbZGlyXSk7Cn0KCmludCBrYWQodmVjdG9yIDxpbnQ+IHYpCnsKICAgIGludCBteCA9IDAsIHN1bSA9IDA7CiAgICBmb3IgKGludCBpOiB2KQogICAgewogICAgICAgIHN1bSArPSBpOwogICAgICAgIG14ID0gbWF4KG14LCBzdW0pOwogICAgICAgIHN1bSA9IG1heChzdW0sIDBMTCk7CiAgICB9CiAgICByZXR1cm4gbXg7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGZpbGUoKTsKCiAgICAvL21lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwoKICAgIGNpbiA+PiBuOwoKICAgIHYgPSB2ZWN0b3IgPHZlY3RvciA8aW50PiA+KG4sIHZlY3RvciA8aW50PihuKSk7CiAgICB2diA9IHZlY3RvciA8dmVjdG9yIDxib29sPiA+KG4sIHZlY3RvciA8Ym9vbD4obiwgZmFsc2UpKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKQogICAgICAgICAgICBjaW4gPj4gdltpXVtqXTsKCiAgICBpbnQgbXggPSAwOwoKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykKICAgIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGludCB4ID0gMCwgeSA9IDA7CgogICAgICAgICAgICBpZiAoaiA9PSAwKQogICAgICAgICAgICAgICAgeCA9IDAsIHkgPSAwLCBkaXIgPSAwOwogICAgICAgICAgICBlbHNlIGlmIChqID09IDEpCiAgICAgICAgICAgICAgICB4ID0gMCwgeSA9IG4gLSAxLCBkaXIgPSAxOwogICAgICAgICAgICBlbHNlIGlmIChqID09IDIpCiAgICAgICAgICAgICAgICB4ID0gbiAtIDEsIHkgPSBuIC0gMSwgZGlyID0gMjsKICAgICAgICAgICAgZWxzZSBpZiAoaiA9PSAzKQogICAgICAgICAgICAgICAgeCA9IG4gLSAxLCB5ID0gMCwgZGlyID0gMzsKCiAgICAgICAgICAgIHZ2ID0gdmVjdG9yIDx2ZWN0b3IgPGJvb2w+ID4obiwgdmVjdG9yIDxib29sPihuLCBmYWxzZSkpOwogICAgICAgICAgICB2MS5jbGVhcigpOwogICAgICAgICAgICByZWMoeCwgeSk7CiAgICAgICAgICAgIG14ID0gbWF4KG14LCBrYWQodjEpKTsKICAgICAgICB9CiAgICAgICAgc3dhcChkeCwgZHkpOwogICAgfQoKICAgIGNvdXQgPDwgbXg7CgoKICAgIHJldHVybiAwOwp9