#include <iostream>
#include <math.h>
using namespace std;

int fl[10001] = {0};

void isfl(int);
void twlf(int);

int main(void) {
  int tag;

  while(1){
    cin >> tag;
    if(tag == 0) break;
    isfl(tag);
    twlf(tag);
  }
  return 0;
}

void isfl(int tag){
  int i,lim,idx = 2;
  fl[0] = 1;
  fl[1] = 1;

  lim = sqrt(tag);

  while(idx <= lim){
    if(fl[idx] == 0) for(i = idx*2;i<=tag;i+=idx) fl[i] = 1;
    idx++;
  }
  return;
}

void twlf(int tag){
  int k=0,data[10000];
  for(int i=1;i<=tag;i++) if(fl[i] == 0){
    data[k] = i;
    k++;
  }
  for(int i=k-1;i>=0;i--){
    if(data[i] - data[i-1] == 2){
      cout << data[i-1] << " " << data[i] << endl;
      break;
    }
  }
  return;
}
#include <iostream>
#include <iomanip>
using namespace std;

int main(){
	int n;
	int i , j;
	while(cin >> n, n!=0) {
	int arr[10][10]={0,0};
	int ansW[11]={0};
	int ansH[11]={0};
		for(i=0 ; i<n ; i++){
			for(j=0 ; j <n ; j++){
				cin >>arr[i][j];
			}
		}
		for(i=0 ; i<n ; i++){
			for(j=0 ; j<n ; j++){
				ansH[i]+=arr[i][j];
			}
		}
		for(i=0 ; i<n ; i++){
			for(j=0 ; j<n ; j++){
				ansW[i]+=arr[j][i];
			}
		}
		for(i=0 ; i<n ; i++){
			for(j=0 ; j<n ; j++){
				cout.fill(' ');
				cout << setw(5) <<right <<arr[i][j];
			}
			cout << setw(5) <<right <<ansH[i] << endl;
		}
		for(i=0; i<n ; i++){
				ansW[n]+=ansW[i];
		}
		for(i=0 ; i<n+1 ; i++){
			cout << setw(5) <<right << ansW[i];
		}
		cout << endl;
	}
	return 0;
}