// Arup Guha
// 3/26/2012
// Determines if several squares are prime squares or not.
// Since functions haven't been taught yet, an array is used to store
// each row, column and diagonal sum, and then each of these is tested
// for primality, so the code can be reused easily.

// I'll write a second version with a function.

#include <stdio.h>

#define MAX 10
#define DEBUG 0

int main() {

    FILE* ifp = fopen("primesq.txt", "r");

    int numcases;
    fscanf(ifp, "%d", &numcases);

    // Go through each square.
    int loop;
    for (loop = 1; loop<=numcases; loop++) {

        int size;
        fscanf(ifp, "%d", &size);

        // Will store the square to test.
        int square[MAX][MAX];

        // Will store all row, column and diagonal sums.
        int allsums[2*MAX+2];

        int i,j;
        for (i=0; i<size; i++)
            for (j=0; j<size; j++)
                fscanf(ifp, "%d", &square[i][j]);

        int sumindex = 0;

        // Store all row sums.
        for (i=0; i<size; i++) {

            int sum = 0;
            for (j=0; j<size; j++)
                sum += square[i][j];

            allsums[sumindex] = sum;
            sumindex++;
        }

         // Store all column sums.
        for (j=0; j<size; j++) {

            int sum = 0;
            for (i=0; i<size; i++)
                sum += square[i][j];

            allsums[sumindex] = sum;
            sumindex++;
        }

        // Store forward diagonal.
        int sum = 0;
        for (i=0; i<size; i++)
            sum += square[i][i];
        allsums[sumindex] = sum;
        sumindex++;

        // Store backward diagonal.
        sum = 0;
        for (i=0; i<size; i++)
            sum += square[i][size-1-i];
        allsums[sumindex] = sum;
        sumindex++;

        if (DEBUG) {
            for (i=0; i<sumindex; i++)
                printf("%d ", allsums[i]);
            printf("\n");
        }

        int correct = 1;

        // Test each sum for primality.
        for (i=0; i<sumindex; i++) {

            // Here is the primality test for allsums[i].
            for (j=2; j<allsums[i]; j++) {
                if (allsums[i]%j == 0) {
                    correct = 0;
                    break;
                }
            }

            // No need to test the rest.
            if (correct == 0)
                break;
        }

        // Output the result.
        if (correct)
            printf("Square #%d: YES\n", loop);
        else
            printf("Square #%d: NO\n", loop);
    }

    fclose(ifp);

    return 0;
}
