#include <math.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> #include <limits.h> #include <stdbool.h> int knight(int a,int b,int n){ int x1=0,y1=0,x2=0,y2=0,co=0; if(a==b){ do{ x2=x2+a; y2=y2+b; co++; }while(x2<n-1); if(x2==n-1) return(co); else return(-1); } else if(a==n-1 || b==n-1){ if(a==1 || b==1){ if(n%2==0) return(n-1); else return(2*(n-1)); } else if(a==2 || b==2){ if(n%2!=0) return(n-1); else return(-1); } else return 0; } else return 0; } int main(){ int n; scanf("%d",&n); int k[n-1][n-1]; for(int a=1;a<n;a++){ for(int b=1;b<n;b++){ if (a>b) k[a][b]=k[b][a]; else k[a][b]= knight(a,b,n); printf("%d ",k[a][b]); } printf("\n"); } // your code goes here return 0; }