#include "Anna.h"
#include<bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define F first
#define S second
#define vi vector<int>
#define pii pair<int,int>
#define f0r(i,n) for(int i = 0; i < n; i++)
#define FOR(i,k,n) for(int i = k; i < n; i++)
#define dout(x) cout<<x<<' '<<#x<<endl
#define dout2(x,y) cout<<x<<' '<<#x<<' '<<y<<' '<<#y<<endl
#define vout(v) cout<<#v<<": "; for(auto u : v)cout<<u<<' '; cout<<endl
using namespace std;
namespace {
int FunctionExample(int r, int c, int K) {
return (r + c) % K + 1;
}
} // namespace
void Anna(int n, int K, std::vector<int> R, std::vector<int> C) {
vi dx4 = {0,0,1,-1}, dy4 = {1,-1,0,0};
vi dx9 = {-1,-1,-1,0,0,0,1,1,1}, dy9 = {-1,0,1,-1,0,1,-1,0,1};
vector<vi>as, ds; f0r(i_,3){
f0r(j_,3){
vector<vi>ans(n,vi(n)), p(n, vi(n)); bool can = 1; f0r(i,n)f0r(j,n){
int d = ((i+i_) % 3) * 3 + ((j+j_) % 3); if(d == 0)p[i][j]=-1; else if(d==1)p[i][j] = -2; else p[i][j] = d-2;
}
f0r(i,n)f0r(j,n)if(p[i][j]==-1||p[i][j]==-2)ans[i][j]=13; else{
int x = R[p[i][j]], y = C[p[i][j]]; if(x-i>=2)ans[i][j]=11; else if(i-x>=2)ans[i][j]=12; else if(y-j>=2)ans[i][j]=9; else if(j-y>=2)ans[i][j]=10; else{
f0r(k,9)if(i+dx9[k]==x && j+dy9[k]==y){ans[i][j] = k+1; if(k+1==9)can=0; break;}
}
}
if(can){as = ans, ds = p;}
}
}
vector<bool>used(14); f0r(i,n)f0r(j,n)used[as[i][j]]=1; int tar = -1; FOR(i,1,9)if(!used[i])tar = i;
f0r(i,n)f0r(j,n)if(as[i][j] > tar)as[i][j]--; f0r(i,n)f0r(j,n)if(ds[i][j] == -2)as[i][j] = tar;
f0r(i,n)f0r(j,n)SetFlag(i,j,as[i][j]);
// f0r(i,n){f0r(j,n)cout<<ans[i][j]<<' '; cout<<'\n';}
/*
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++) {
SetFlag(r, c, FunctionExample(r, c, K));
}
}
*/
}
#include "Bruno.h"
#include<bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define F first
#define S second
#define vi vector<int>
#define pii pair<int,int>
#define f0r(i,n) for(int i = 0; i < n; i++)
#define FOR(i,k,n) for(int i = k; i < n; i++)
#define dout(x) cout<<x<<' '<<#x<<endl
#define dout2(x,y) cout<<x<<' '<<#x<<' '<<y<<' '<<#y<<endl
#define vout(v) cout<<#v<<": "; for(auto u : v)cout<<u<<' '; cout<<endl
using namespace std;
namespace {
int variable_example = 1;
} // namespace
std::vector<int> Bruno(int K, std::vector<int> v) {
vi dx4 = {0,0,1,-1}, dy4 = {1,-1,0,0};
vi dx9 = {-1,-1,-1,0,0,0,1,1,1}, dy9 = {-1,0,1,-1,0,1,-1,0,1};
vector<vector<pair<int,pii>>>w(3, vector<pair<int,pii>>(3)); int ptr = 0; f0r(i,3)f0r(j,3){w[i][j]=mp(v[ptr],mp(i,j)),ptr++;}
vector<vector<pair<int,pii>>>g = w;
while(w[0][0].F != 12 && w[0][1].F != 12 && w[0][2].F != 12){
auto tmp = w[0]; w[0]=w[1]; w[1]=w[2]; w[2]=tmp;
}
while(w[0][0].F != 12){
f0r(i,3){auto tmp = w[i][0]; w[i][0]=w[i][1]; w[i][1]=w[i][2]; w[i][2]=tmp;}
}
vector<vi>p(3,vi(3,-1));
ptr = -2; f0r(i,3)f0r(j,3){
p[w[i][j].S.F][w[i][j].S.S] = ptr; ptr++;
}
// f0r(i,3){f0r(j,3)cout<<p[i][j]<<' '; cout<<'\n';}
int tar = -1; f0r(i,3)f0r(j,3)if(p[i][j]==-1)tar = g[i][j].F;
f0r(i,3)f0r(j,3)if(g[i][j].F >= tar)g[i][j].F++;
vi ans(K); f0r(i,3)f0r(j,3)if(p[i][j]>=0){
int d = p[i][j]; int num = g[i][j].F; if(num>=9)ans[d]=num-9; else{
int x=1, y=1, nx=i+dx9[num-1], ny=j+dy9[num-1]; //dout(p[i][j]); dout2(nx,ny);
if(x==nx&&y==ny)ans[d]=4; else if(x<nx)ans[d]=2; else if(x>nx)ans[d]=3; else if(y<ny)ans[d]=0; else ans[d]=1;
}
}
// vout(ans);
return ans;
/*
variable_example += 1;
std::vector<int> res(K, 0);
for (int i = 0; i < K; i++) {
res[i] = (value[i] % 5);
}
return res;
*/
}