#include <bits/stdc++.h>
using namespace std;
int n;
int t[1001][1001]; // i rzad, j kolumna; 1 rzad, 2 kolumna
//wspolrzedne zer to to po prostu wszystkie te same i i j
void wypisz()
{
for(int i = 0; i < n; i ++) // Wypisanie wyniku
{ // UWAGA! POMOCNICZE SPACJE!
for(int j = 0; j < n; j ++)
{
cout << t[i][j] << " ";
//if((t[i][j] <= 9) && (t[i][j] != -1)) cout << " ";
}
cout << "\n";
}
}
void pomocnicze_przekatne(int i, int j, int wartosc)
{
while(i > 0)
{
if(t[i][j] != 0) t[i][j] = wartosc;
i --;
j ++;
}
}
int main()
{
cin >> n;
if(n == 2)
{
cout << 0 << " " << 1 << "\n" << 1 << " " << 0 << "\n";
return 0;
}
for(int i = 0; i < n; i ++)
{
for(int j = 0; j < n; j ++)
{
if(i != j)
t[i][j] = -1;
}
}
for(int i = 1; i < n; i ++) // uzupelnienie ostatniego rzedu i ostatniej kolumny
{
t[n - 1][n - i - 1] = i;
t[n - i - 1][n - 1] = i;
}
// Zaznaczenie wiadomych przekatnych
for(int i = 0; i < n - 3; i ++)
{
for(int j = 0; j < n - i - 1; j ++) // Uwaga przy j
{
if(t[n - j - 1][j + i] != 0) t[n - j - 1][j + i] = t[n - 1][i];
}
}
//wypisz();
//cout << "\n";
t[n - 2][0] = t[n - 1][n - 3];
t[0][n - 2] = t[n - 1][n - 3];
for(int i = n - 2; i > 1; i --) // Dodac aktualizacje dodatkowych przekatnych
{
t[i][0] = t[i + 1][i - 1];
t[0][i] = t[i + 1][i - 1];
if(t[i][1] == -1)
{
t[i][1] = t[i + 1][n - 1];
t[1][i] = t[i + 1][n - 1];
pomocnicze_przekatne(i, 1, t[1][i]);
}
}
t[1][0] = t[2][n - 1];
t[0][1] = t[2][n - 1];
wypisz();
//cout << "\n";
return 0;
}
96. Unique Binary Search Trees | 75. Sort Colors |
74. Search a 2D Matrix | 71. Simplify Path |
62. Unique Paths | 50. Pow(x, n) |
43. Multiply Strings | 34. Find First and Last Position of Element in Sorted Array |
33. Search in Rotated Sorted Array | 17. Letter Combinations of a Phone Number |
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |