## i538
## Borbély-Bartis Gergely
## Ciszterci Rend Nagy Lajos Gimnáziuma és Kollégiuma, Pécs
## 9.C


class Lap:
    def __init__(self, s):
        '''s -> 'név felső jobb alsó bal'''
        self.szam, self.felso, self.jobb, self.also, self.bal = [int(x) for x in s.split(' ')]

    def __str__(self):
        return str(self.szam)

    def paszol(self, masik, oldal):
        t = {
            oldal == 'felso' : self.felso == masik.also,
            oldal == 'jobb' : self.jobb == masik.bal,
            oldal == 'also' : self.also == masik.felso,
            oldal == 'bal' : self.bal == masik.jobb
            }
        
        return t[True]

def matrix_ki(matrix):
    '''Mátrix kiírása'''

    maxhossz = 0
    for y in matrix:
        for x in y:
            if len(str(x)) > maxhossz:
                maxhossz = len(str(x))

    for y in matrix:
        for x in y:
            print('{0:>{1}}'.format(str(x), maxhossz), end=' ')
        print() #új sor

def kirak(lapok):
    n = int(len(lapok)**0.5)
    kirakott = []
    for i in range(n+2):
        kirakott.append([Lap('0 0 0 0 0')]*(n+2))


    for y in range(1, n+1):
        for x in range(1, n+1):
            for i, lap in enumerate(lapok):
                if lap.paszol(kirakott[y-1][x], 'felso') and lap.paszol(kirakott[y][x-1], 'bal'):
                    kirakott[y][x] = lap
                    del lapok[i]  

    return [x[1:-1] for x in kirakott[1:-1]] #szélek levágása
            

    
            

    


def main():
    n = int(input()) #sorok és oszlopok száma
    lapok = []
    for i in range(n**2):
        lapok.append(Lap(input()))



    kirakott = kirak(lapok)
    ki = []
    for sor in kirakott:
        ki += sor
    print(' '.join([str(x) for x in ki]))


main()
