#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void rread(T& num) {
  num = 0;
  T f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') num = num * 10 + ch - '0', ch = getchar();
  num *= f;
}
const long long inf = 1e18;
const int maxn = 1e2 + 10, mod = 1e9 + 7;
const int mod1 = 1e8 + 7, mod2 = 41;
const double pi = acos(-1);
long long gcd(long long a, long long b) { return (a ? gcd(b % a, a) : b); }
int gcd(int a, int b) {
  if (b == 0) {
    return a;
  }
  int r = a % b;
  return gcd(b, r);
}
void exgcd(long long a, long long b, long long& d, long long& x, long long& y) {
  if (!b) {
    d = a;
    x = 1;
    y = 0;
  } else {
    exgcd(b, a % b, d, y, x);
    y -= x * (a / b);
  }
}
complex<double> power(complex<double> a, int n) {
  complex<double> p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
    }
    n >>= 1;
    a *= a;
  }
  return p;
}
unsigned long long power(unsigned long long a, unsigned long long n) {
  unsigned long long p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
    }
    n >>= 1;
    a *= a;
  }
  return p;
}
long long power(long long a, long long n) {
  long long p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
    }
    n >>= 1;
    a *= a;
  }
  return p;
}
long long power(long long a, long long n, long long mod) {
  long long p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
      p %= mod;
    }
    n >>= 1;
    a *= a;
    a %= mod;
  }
  return p % mod;
}
int n, m;
int a[4][4] = {
    {4, 3, 6, 12},
    {7, 5, 9, 15},
    {14, 1, 11, 10},
    {13, 8, 16, 2},
};
int b[3][3] = {
    {1, 7, 9},
    {3, 2, 5},
    {4, 8, 6},
};
int ans[600][600];
int main() {
  int t;
  cin >> n;
  if (n < 3)
    cout << -1 << endl;
  else if (n == 3) {
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 3; j++) cout << b[i][j] << " ";
      cout << endl;
    }
  } else {
    int cun = 1;
    int f = 0;
    for (int j = 4; j < n; j++) {
      if (f == 0) {
        for (int i = 0; i < 4; i++) {
          ans[i][j] = cun++;
        }
        f = 1;
      } else {
        for (int i = 3; i >= 0; i--) ans[i][j] = cun++;
        f = 0;
      }
    }
    f = 0;
    for (int i = n - 1; i >= 4; i--) {
      if (f == 0) {
        for (int j = n - 1; j >= 0; j--) ans[i][j] = cun++;
        f = 1;
      } else {
        for (int j = 0; j < n; j++) ans[i][j] = cun++;
        f = 0;
      }
    }
    if (f == 0) {
      swap(ans[4][n - 1], ans[4][1]);
    } else
      swap(ans[4][0], ans[4][1]);
    for (int i = 0; i < 4; i++)
      for (int j = 0; j < 4; j++) ans[i][j] = a[i][j] + cun - 1;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) cout << ans[i][j] << " ";
      cout << endl;
    }
  }
  return 0;
}
