// Program 22: Boundary Primes and Diagonal Sum import java.util.*; class BoundaryPrime { static boolean prime(int n) { if (n < 2) { return false; } for (int i = 2; i * i <= n; i++) { if (n % i == 0) { return false; } } return true; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if (n < 1 || n > 20) { System.out.println("Invalid order"); return; } int[][] a = new int[n][n]; int[] primes = new int[n * n]; int size = 0; int sum = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a[i][j] = sc.nextInt(); if ((i == 0 || j == 0 || i == n - 1 || j == n - 1) && prime(a[i][j])) { primes[size++] = a[i][j]; } if (i == j || i + j == n - 1) { sum += a[i][j]; } } } for (int i = 1; i < size; i++) { int key = primes[i]; int j = i - 1; while (j >= 0 && primes[j] > key) { primes[j + 1] = primes[j]; j--; } primes[j + 1] = key; } for (int i = 0; i < size; i++) { System.out.print(primes[i] + " "); } System.out.println("Diagonal sum = " + sum); } }