from collections import deque

def main():
    n, m = map(int, input().split())
    
    adj = [[] for _ in range(n)]
    for _ in range(m):
        a,b = map(int , input().split())
        adj[a-1].append(b-1)
        adj[b-1].append(a-1)

    mt,tm = [-1]*n,[-1]*n

    for i in range(n):
        q = deque()
        prev = [-1]*n
        old_mt = [i for i in mt]
        old_tm = [i for i in tm]
        for j in adj[i]:
            q.append(j)
            prev[j] = i
        found = 0
        while q:
            cur = q.popleft()
            if mt[cur] == -1:
                #print("i", i, "cur", cur, "prev", prev, "mt", mt)
                found = 1
                while 1:
                    nxt = prev[cur]
                    tm[nxt] = cur
                    mt[cur] = nxt
                    cur = old_tm[nxt]
                    if cur == -1: break
                break
            for j in adj[mt[cur]]:
                if prev[j] == -1:
                    prev[j] = mt[cur]
                    q.append(j)
        if not found:
            print(-1)
            return    
    
    print(
        "\n".join(
            " ".join(
                str((5000 if mt[i]==j else 0)+(5000 if mt[j] == i else 0)) for j in range(n)
            ) for i in range(n)
        )
    )

if __name__ == "__main__":
    main()
