# 13291 - KONODIODA
## Brief
Given an image (square matrix) A[N,N], if point P(X,Y) is the center of a star, the following condition will be satisfied:
(1) A[X][j]=255, for all 0<=j<N (The values in the Xth row are all 255)
(2) A[i][Y]=255, for all 0<=i<N (The values in the Yth column are all 255)
(3)
A[X+i][Y+i]=255, for all -N<=i<N if 0<=(X+i)<N and 0<=(Y+i)<N
A[X+i][Y-i]=255, for all -N<=i<N if 0<=(X+i)<N and 0<=(Y-i)<N
(The values of two diagonals from the centers are all 255)
For example, a star looks like:

In this problem, given T square matrices wth size N, you are asked to find out how many stars in each matrix respectively.
## Input
There are three parts of the input:
(1) The number of testcases, T. 1<=T<=1000
(2) The size of the square matrices, N. 1<=N<=2048
(3) T N*N matrices separated by a newline character. 0<=The values in the matrices<=255.
## Output
The number of stars in each matrix.
Note that you need to print "\n" in the end of each answer.
## Solution
```c=
//by 景璞
#include<stdio.h>
int test[2049][2049]={0};
int main()
{
int size ;
int border;
int num_que;
scanf("%d", &num_que);
scanf("%d", &size);
border = size-1;
while(num_que--){
int row[2049]={0};
int col[2049]={0};
int diag1[4099]={0};
int diag2[4099]={0};
for(int i=0; i<size; i++)
for(int j=0; j<size; j++)
{
scanf("%d", &test[i][j]);
if(test[i][j]==255)
{
row[i] += 1;
col[j] += 1;
diag1[i-j+border] += 1;
diag2[i+j] += 1;
}
}
unsigned long long int res = 0;
for(int i=0; i<size; i++)
{
for(int j=0; j<size; j++)
{
int num_diag1 = (i-j>0)? size-(i-j) : size+(i-j);
int num_diag2 = (i+j>=size)? 2*size -(i+j+1) : i+j+1;
if(row[i]==size && col[j]==size && diag1[i-j+border]==num_diag1 && diag2[i+j]==num_diag2)
{
res++;
}
}
}
printf("%lld\n", res);
}
return 0;
}
```