import java.io.*;
import java.lang.*;
import java.util.*;

public class CarreMagique {

  final static int N = 100;

  static int     a[][] = new int[N][N];
  static int     n;

  static void Init (int n){

    for (int i = 0 ; i < n; ++i)
        for (int j = 0; j < n; ++j)
            a[i][j] = 0;
  }

  static void Magique (int n) {
    int i, j;

    i = n - 1; j = n / 2;
    for (int k = 1; k <=  n * n; ++k) {
        a[i][j] = k;
        if ((k % n) == 0)
            i = i - 1;
        else {
            i = (i + 1) % n; 
            j = (j + 1) % n;
        }
    }
  }

  static void Erreur (String s) {

    System.err.println ("Erreur fatale: " + s);
    System.exit (1);
  }

  static int Lire ()  {
    int n; 
    BufferedReader in;

    in  = new BufferedReader(new InputStreamReader(System.in));
    System.out.print ("Taille du carre' magique, svp?::  ");
    try {
      n = Integer.parseInt (in.readLine());
    }
    catch (IOException e) {
      n = 0;
    }
    if ((n <= 0) || (n > N) || (n % 2 == 0)) 
        Erreur ("Taille impossible.");
    return n;
  }

  static void Imprimer (int n) {

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) 
            System.out.print (leftAligned(5, a[i][j] + " "));
        System.out.println ();
    }
  }

  static String leftAligned (int size, String s) {

    StringBuffer t = new StringBuffer (s);
    for (int i = s.length(); i < size; ++i)
        t = t.append(" ");
    return new String (t);
  }


  public static void main (String args[]) {

    n = Lire();
    Init(n);       // \esc{Cette proce'dure est inutile} 
    Magique(n);
    Imprimer(n);
  }
}
