#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
typedef long long ll;

// aよりもbが大きいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>
bool chmax(T &a, const T& b) {
  if (a < b) {
    a = b;  // aをbで更新
    return true;
  }
  return false;
}
// aよりもbが小さいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>
bool chmin(T &a, const T& b) {
  if (a > b) {
    a = b;  // aをbで更新
    return true;
  }
  return false;
}

int main(){
    int N;cin>>N;
    vector<int> a;
    rep(i,N)a.push_back(i+1);
    rep(i,N){
        rep(j,N){
            cout<<a[j]<<' ';
            if(j==N-1){
                printf("\n");
            }
        }
        int p=a[N-1];
        a.pop_back();
        a.insert(a.begin(),p);
    }

}