#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
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};
void Anna(int n, int K, std::vector<int> R, std::vector<int> C) {
vector<vi>ans(n,vi(n)), p(n, vi(n)); f0r(i,n)f0r(j,n){
int d = (i % 3) * 3 + (j % 3); if(d == 0)p[i][j]=-1; else if(d==1)p[i][j] = 0; else p[i][j] = d-2;
}
f0r(i,n)f0r(j,n)if(p[i][j]==-1)ans[i][j]=14; else{
int x = R[p[i][j]], y = C[p[i][j]]; if(x-i>=2)ans[i][j]=3; else if(i-x>=2)ans[i][j]=4; else if(y-j>=2)ans[i][j]=1; else if(j-y>=2)ans[i][j]=2; else{
f0r(k,9)if(i+dx9[k]==x && j+dy9[k]==y){ans[i][j] = 5+k; break;}
}
}
f0r(i,n)f0r(j,n)SetFlag(i,j,ans[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
// 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};
std::vector<int> Bruno(int K, std::vector<int> v) {
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 != 14 && w[0][1].F != 14 && w[0][2].F != 14){
auto tmp = w[0]; w[0]=w[1]; w[1]=w[2]; w[2]=tmp;
}
while(w[0][0].F != 14){
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){
if(ptr>=0)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';}
vi ans(K); f0r(i,3)f0r(j,3)if(p[i][j]!=-1){
int d = p[i][j]; int num = g[i][j].F; if(num<=4)ans[d]=num-1; else{
int x=1, y=1, nx=i+dx9[num-5], ny=j+dy9[num-5]; //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;
*/
}