def solve_transitive_closure():
    try:
        n_str=input("enter the number of vertices(n):");
        n=int( n_str);
        except(valueError,EOFError);
            print("invalid input.");
            return
        if n<0:
            print("invalid input.")
            return
        transitive_closure=[[0]*n for_in range(n)]
        while true:
            try:
                edge_input=input("enter an edge(source destination)or-1 to terminate;")
                if edge_input.strip=="-1":
                    break
                source,destination=map(int,edge_input.split())
                if 1<=source<=n and 1<=destination<=n:
                    transitive_closure[source-1][destination-1]=1
                    except(valueError,indexError,EOFError):
                        print("invalid edge input.please enter two integer or-1")
                        continue
                    for i in range(n):
                        transitive_closure[i][i]=1
                        for k in range(n):
                            for i in range(n):
                                for j in range(n):
                                    transitive_closure[i][j]=transitive_closure[i][j]or\(transitive_closure[i][k]and transitive_closure[k][j])
                                    for row in transitive_closure():
                                        print("".join(map(str,row)))
                                        solve_transitive_closure()