import algorithm,sequtils,tables,math,sets,strutils,sugar,heapqueue,deques,bitops,re,streams let outstream=newFileStream(stdout) proc input():string{.inline.}=stdin.readLine proc print(args:varargs[string,`$`]):void{.inline.}=stdout.writeLine(args) proc debug(args:varargs[string,`$`]):void{.inline.}=stderr.writeLine(args) proc flush():void{.inline.}=flush(outstream) proc `%`(x:int,y:int):int{.inline.}=((x mod y)+y) mod y proc `//`(x:int,y:int):int{.inline.}=((x)-(x%y)) div y proc `%=`(x:var int,y:int):void{.inline.}=x=x%y proc `//=`(x:var int,y:int):void{.inline.}=x=x//y proc `**`(x:int,y:int):int{.inline.}=x^y proc `**`(x:float,y:int):float{.inline.}=x^y proc `^`(x:int,y:int):int{.inline.}=x xor y proc `&`(x:int,y:int):int{.inline.}=x and y proc `|`(x:int,y:int):int{.inline.}=x or y proc `<<`(x:int,y:int):int{.inline.}=x shl y proc `>>`(x:int,y:int):int{.inline.}=x shr y proc `~`(x:int):int{.inline.}=not x proc `^=`(x:var int,y:int):void{.inline.}=x=x xor y proc `&=`(x:var int,y:int):void{.inline.}=x=x and y proc `|=`(x:var int,y:int):void{.inline.}=x=x or y proc `<<=`(x:var int,y:int):void{.inline.}=x=x shl y proc `>>=`(x:var int,y:int):void{.inline.}=x=x shr y var N=input().parseInt var ans=newSeq[seq[int]](N*2-1) for i in 0..