#include using namespace std; int n,t; int a[20][20]; int eval_path(vector> path){ int sum=0; for(auto [i,j]:path) sum+=a[i][j]; return sum; } void print(vector> path){ cout<> simple(int l,int r){ vector> path; for (int i = 0; i < l; i++) { if (i % 2 == 0) { // 左から右へ for (int j = 0; j < r; j++) { path.push_back(make_pair(i, j)); if (path.size() == t) { break; } } } else { // 右から左へ for (int j = r - 1; j >= 0; j--) { path.push_back(make_pair(i, j)); if (path.size() == t) { break; } } } if (path.size() == t) { break; } } return path; } int main(){ cin>>n>>t; for(int i=0;i>a[i][j]; auto ans=simple(0,0); int sc_max=eval_path(ans); for(int l=1;l<=n;l++) for(int r=1;r<=n;r++){ if(l*r> v(n,vector(n,0)); vector> path; int dx[]{1,0,-1,0},dy[]{0,1,0,-1}; auto dfs=[&](auto self,int i,int j){ path.emplace_back(i,j); int sm=-1,idx=-1; for(int k=0;k<4;k++){ int ni=i+dx[k],nj=j+dy[k]; if(ni<0||ni>=n||nj<0||nj>=n) continue; if(sm(n,0); path.clear(); dfs(dfs,i,j); while(path.size()>t) path.pop_back(); if(sc_max