#include <bits/stdc++.h>
using namespace std;
template <class T>
struct vect : vector<T> {
  vect() : vector<T>() {}
  vect(int n) : vector<T>(n) {}
  T& operator[](int i) {
    assert(0 <= i && i < (int)vector<T>::size());
    return vector<T>::operator[](i);
  }
};
const string nd = "\n", sp = " ";
template <typename T>
void print(vector<T>& a) {
  for (int(i) = 0; (i) <= (((int)(a).size()) - 1); ++i) {
    cout << i << ": " << a[i] << ", ";
  }
  cout << nd;
}
template <typename T1, typename T2>
void print(pair<T1, T2>& a) {
  cout << a.first << sp << a.second << nd;
}
void SOLVE() {
  int n;
  cin >> n;
  int l = 1, r = n * n;
  for (int(i) = 1; (i) <= (n); ++i) {
    for (int(j) = 1; (j) <= (n / 2); ++j) {
      cout << l << sp << r << sp;
      l++;
      r--;
    }
    cout << nd;
  }
}
int main() {
  if (0) {
    freopen("local.in", "r", stdin);
  }
  if (0) {
    freopen(
        "dualpal"
        ".in",
        "r", stdin);
    freopen(
        "dualpal"
        ".out",
        "w", stdout);
  }
  int t = 1;
  while (t--) {
    SOLVE();
  }
  return 0;
}
