#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define lowbit(x) ((x) & -(x)) #define lson l,mid,id<<1 #define rson mid+1,r,id<<1|1 #define ls id<<1 #define rs id<<1|1 #define MID(l,r) ((l)+(((r)-(l))>>1)) #define fi first #define se second #define mk make_pair #define mt make_tuple #define pb push_back #define epb emplace_back #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() using LL = long long; //using LL = __int64; using pii = pair; using pdd = pair; using pLL = pair; const int INF = 0x3f3f3f3f; const LL LINF = 0x3f3f3f3f3f3f3f3f; const double pi = acos(-1.0); const double eps = 1e-8; const int e5 = 100000; // 1e5 const int e6 = 1000000; //1e6; const int MOD_1e9 = 1000000007; //1e9 + 7 const int MOD_998 = 998244353; const int MOD = MOD_1e9; template< typename T = int > inline T read() { char c = '\0'; bool f = false; T x = 0; while(c < '0' || '9' < c) {if(c == '-') f = true; c = getchar();} while('0' <= c && c <= '9') {x = (x << 1) + (x << 3) + (c & 0xf); c = getchar();} if(f) return -x; return x; } template< typename T > inline void read(T &x) {x = read();} template< typename T, typename ...Args > inline void read(T &x, Args &...args) {read(x); read(args...);} template< typename T > inline void get_min(T &x, T y) {if(y < x) x = y;} template< typename T > inline void get_max(T &x, T y) {if(x < y) x = y;} template< typename T > inline void get_unique(vector &vec) {sort(all(vec)); vec.erase(unique(all(vec)), vec.end());} inline int sig(double x) {return x < -eps ? -1 : eps < x;} LL fp(LL a, LL n, LL mod = MOD) { if(n < 0) a = fp(a, mod - 2, mod), n = -n; LL res = 1; for(; n; n >>= 1, a = a * a % mod) if(n & 1) res = res * a % mod; return res; } template< int mod > struct Mint { int x; Mint():x(0) {} Mint(int _x): x(_x) {if(x < 0 || x >= mod) x %= mod; if(x < 0) x += mod;} Mint(LL _x) {if(_x < 0 || _x >= mod) _x %= mod; if(_x < 0) _x += mod; x = _x;} Mint operator - () const {return Mint(mod - x);} Mint operator + (const Mint &rhs) const {return Mint(x + rhs.x >= mod ? x + rhs.x - mod : x + rhs.x);} Mint operator - (const Mint &rhs) const {return Mint(x - rhs.x < 0 ? x - rhs.x + mod : x - rhs.x);} Mint operator * (const Mint &rhs) const {return Mint((LL)x * rhs.x % mod);} Mint operator / (const Mint &rhs) const {return Mint((LL)x * fp(rhs.x, -1, mod) % mod);} bool operator == (const Mint &rhs) const {return x == rhs.x;} bool operator != (const Mint &rhs) const {return x != rhs.x;} Mint &operator += (const Mint &rhs) {x += rhs.x; if(x >= mod) x -= mod; return *this;} Mint &operator -= (const Mint &rhs) {x -= rhs.x; if(x < 0) x += mod; return *this;} Mint &operator *= (const Mint &rhs) {x = (LL)x * rhs.x % mod; return *this;} Mint &operator /= (const Mint &rhs) {x = (LL)x * fp(rhs.x, -1, mod) % mod; return *this;} friend ostream &operator << (ostream &out, const Mint &rhs) {return out << to_string(rhs.x);} Mint inv() {return Mint(fp(x, -1, mod));} Mint pow(int k) {return Mint(fp(x, k, mod));} Mint pow(const Mint &t) {return Mint(fp(x, t.x, mod));} }; const int maxn = (int) 2e5 + 20; const int maxm = (int) 2e6 + 20; int a[555][555]; int b[10]; int c[111], cc; void work() { int n, x, y; read(n, x, y); for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) read(a[i][j]); for(int i = 1; i < 10; i++) b[i] = 8 * i * i; int ans = INF; for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { cc = 0; for(int p = i - 3; p <= i + 3; p++) for(int q = j - 3; q <= j + 3; q++) { if(1 <= p && p <= n && 1 <= q && q <= n && abs(i - p) + abs(j - q) <= 3 && (i != p || j != q)) { c[cc++] = a[p][q]; } } sort(c, c + cc); reverse(c, c + cc); int tmp = (abs(i - x) + abs(j - y) + 1) / 2; int inc = a[i][j]; int tot = 0; int ci = 0; for(int k = 1; k < 9; k++) { int d = (b[k] - tot + inc - 1) / inc; if(d > 0) { tmp += d; tot += inc * d; if(ci < cc) { inc += c[ci++]; } } } ans = min(ans, tmp); } } cout <