#include using namespace std; typedef long long ll; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b #define vl vector #define vii vector> #define vll vector> #define vvi vector> #define vvl vector> #define vvii vector>> #define vvll vector>> #define vst vector #define pii pair #define pll pair #define pb push_back #define all(x) (x).begin(),(x).end() #define mkunique(x) sort(all(x));(x).erase(unique(all(x)),(x).end()) #define fi first #define se second #define mp make_pair #define si(x) int(x.size()) const int mod=998244353,MAX=300005,INF=15<<26; struct UF{ int n; vector par,size,edge; void init(int n_){ n=n_; par.assign(n,-1); size.assign(n,1); edge.assign(n,0); for(int i=0;i>N; vvl A(N,vl(N)); for(int i=0;i>A[i][j]; } } if(N<=3){ vvi S(N,vi(N)); for(int i=0;i SE; queue Q; SE.insert(S); Q.push(S); map MA; while(!Q.empty()){ auto T=Q.front();Q.pop(); ll sum=0; for(int i=0;i=N||tow<0||tow>=N) continue; swap(T[i][j],T[toh][tow]); if(!SE.count(T)){ SE.insert(T); Q.push(T); } } } } } cout<<"No\n"; return 0; } vvi def(N,vi(N)); int tim=0; for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ def[i][j]=tim++; } } for(int i=0;i=4||j>=4){ def[i][j]=tim++; } } } bool pa; { UF uf;uf.init(N*N); for(int i=0;i MA; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); auto rd=[&](ll momo){ ll x=rng()%momo; if(x<0) x+=momo; return x; }; vl SC(16); for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ SC[i*4+j]=A[i][j]; } } vi idx(16);iota(all(idx),0); int qq=0; while(1){ shuffle(idx.begin()+1,idx.end(),rng); qq++; //if(qq%10000==0) cout<