/*#include <stdio.h>
#include <stdlib.h>
#define MAXMIZE 100001
int stack[MAXMIZE];
int sum=0;
int length=0;
void pop()
{
length--;
sum-=stack[length];
}
void push(int k)
{
stack[length]=k;
sum+=stack[length];
length++;
}
int main()
{
int n,i,a;
scanf("%d", &n);
for(i=0;i<n;i++)
{
scanf("%d", &a);
if(a==0)
{
pop();
}
else
{
push(a);
}
}
printf("%d", sum);
}
*/
//#include <stdio.h>
//#include <string.h>
//
//#define MAXMIZE 1000
//
//char stack[MAXMIZE];
//int k=0;
//int m=0;
//void push(char c)
//{
//
// stack[k]=c;
// k++;
// m++;
// if(m%3==0 && k!=0)
// {
// stack[k]=',';
// k++;
// m=0;
// }
//}
//int main()
//{
// int n,i,a;
// char arr[2001];
//
// k = 0;
// m = 0;
//
// scanf("%d", &n);
// scanf("%s", arr);
//
// for(i=strlen(arr)-1; i>=0; i--)
// {
// push(arr[i]);
// }
// if(m==0) k--;
//
// for(i=k-1; i>=0; i--)
// {
// printf("%c", stack[i]);
// }
//
// return 0;
//}
//2016 3102 3117
//#include <stdio.h>
//
//int main()
//{
// int i, j, arr[12][11];
// for (i = 1; i <= 11; i++)
// {
// for (j = 1; j <= 10; j++)
// {
// scanf("%d", &arr[i][j]);
// }
// }
//
//
// for (int j = 1; j <= 10; j++)
// {
// if(arr[11][j]==1)
// {
//
// for (i = 10; i >=1; i--)
// {
//
// if (arr[i][j] > 0)
// {
// printf("%d crash\n", j);
// break;
// }
// else if (arr[i][j] < 0)
// {
// printf("%d fall\n",j);
// break;
// }
//
// else if(i==1)
// {
// printf("%d safe\n", j);
// }
// }
//
// }
// }
// return 0;
//}
/*
#include <stdio.h>
int main()
{
int n,i,j,k,arr[100][100];
scanf("%d", &n);
i=0;
j=n/2;
for(k=1; k<=n*n; k++)
{
arr[i][j]=k;
if(k%n==0)
{
i++;
continue;
}
if(i==0)
{
i=n-1;
}
else
{
i--;
}
if(j==n-1)
{
j=0;
}
else
{
j++;
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int a,n,i,j,k=1,arr[100][100];
scanf("%d", &n);
for(a=0; a<n*2-1; a++)
{
if(a<n-1)
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
arr[i][j]=='0';
}
}
}
else if(a/2+1)
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i+j==a)
{
arr[j][i]=k++;
}
}
}
}
else
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i+j==a)
{
arr[i][j]=k++;
}
}
}
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
*/
#include<stdio.h>
int main() {
int i, j, n, map[100][100] = {0};
int k=1;
scanf("%d", &n);
for(i=0; i<n; i++) {
if(i%2==0) {
for(j=i; j<n; j++) {
map[i][j] = k++;
}
}
else {
for(j=n-1; j>=i; j--) {
map[i][j] = k++;
}
}
}
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%d ", map[i][j]);
}
printf("\n");
}
}