#include #include #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 REP(i,n) for(int (i)=0; (i)<(n) ;++(i)) #define REPN(i,a,n) FOR((i),(a),(a)+(n)) #define FOR(i,a,b) for(int (i)=(a); (i)<(b) ;++(i)) #define PB push_back #define MP make_pair #define SE second #define FI first #define DBG(a) cerr<<(a)< PLL; typedef vector VLL; typedef pairPI; typedef vector VI; const LL LINF=334ll<<53; const int INF=15<<26; const LL MOD=1E9+7; int main(){ cin.tie(0); ios::sync_with_stdio(false); int n,m,ans=0; cin >> n >> m; vector> id(n*n*m+1); vector>> card(m,vector>(2*n+2)); REP(i,m){ int tmp; REP(j,n){ REP(k,n){ cin >> tmp; card[i][j].push_back(tmp); card[i][n+k].push_back(tmp); id[tmp].emplace_back(i,j); id[tmp].emplace_back(i,n+k); if(j==k){ card[i][2*n].push_back(tmp); id[tmp].emplace_back(i,2*n); } if(j+k==n-1){ card[i][2*n+1].push_back(tmp); id[tmp].emplace_back(i,2*n+1); } int loop=2+(j==k?1:0)+(j+k==n-1?1:0),size=id[tmp].size(); for(int l=size-loop;l &v=card[id[tmp][h].FI][id[tmp][h].SE]; if(*lower_bound(ALL(v),a)==a)cnt++; } //if(ans