public class hthree {

public void arrange(int[][]a,int n ,int N) {
a = new int[N - n][N - n];
for(int i=0; i<N - n; i++) {
a[i][0] = i + 1;
}
if(N - n == 0 ) {
System.out.println("人数太少无法指定比赛日程表!");
}
else if(N - n == 1) {
System.out.println("人数不足以进行循环赛日程安排!");
}
else if(N - n == 2) {
a[n][1] = a[N - 1][0];
a[N - 1][1] = a[n][0];
}
  else {
int[][] a1 = new int[(N + n) / 2][(N + n) / 2];
int[][] a2 = new int[(N + n) / 2][(N + n) / 2];
arrange(a1,0,(N + n) / 2);
arrange(a2,(N + n) / 2,N);
for(int i=0; i<(N+n)/2; i++) {
for(int k=0; k<(N+n)/2; k++) {
a[i + (N + n) / 2][k + (N + n) / 2] = a[i][k];
}
}
for(int i=(N+n)/2; i<N ; i++) {
for(int k=0; k<(N+n)/2; k++) {
a[i - (N+n)/2][k + (N+n)/2] = a[i][k];
}
}
}
}

public static void main(String args[]) {
hthree question = new hthree();
int a3[][] = new int[Integer.parseInt(args[0])][Integer.parseInt(args[0])];
question.arrange(a3,0,Integer.parseInt(args[0]));
if(Integer.parseInt(args[0]) != 0 && Integer.parseInt(args[0]) != 1) {
System.out.println("循环赛日程表已生成");
}
for(int i=0; i<Integer.parseInt(args[0]); i++) {
System.out.println();
for(int k=0;  k<Integer.parseInt(args[0]); k++) {
System.out.print(a3[i][k] + " ");
}
}
}
}