def srch(i, l, Lng, Dst):
    if Lng[i] != -1 and Lng[i] < l:
        return
    Lng[i] = l
    if Dst[i] is not None and len(Dst[i]) > 0:
        for c in Dst[i]:
            srch(c,l+1, Lng, Dst)

def main():
    num = int(input())
    Dst = [None for i in range(num + 1)]
    Lng = [-1] * (num + 1)
    
    for n in range(1, num+1):
        a = list(map(int,input().split()))
        u = a[0]
        if a[1] > 0:
            Dst[u] = a[2:]

    srch(1, 0, Lng, Dst)

    for n in range(1, num+1):
        l = Lng[n]
        if l > num:
            l = -1
        print("{} {}".format(n,l))

if __name__ == '__main__':
    main() def srch(i, l, Lng, Dst):
    if Lng[i] != -1 and Lng[i] < l:
        return
    Lng[i] = l
    if Dst[i] is not None and len(Dst[i]) > 0:
        for c in Dst[i]:
            srch(c,l+1, Lng, Dst) srch if Lng[i] != -1 and Lng[i] < l:
        return
     Lng[i] != -1 and Lng[i] < l Lng[i] != -1 Lng[i] Lng i -1 Lng[i] < l Lng[i] Lng i l return Lng[i] = l Lng[i] Lng i l if Dst[i] is not None and len(Dst[i]) > 0:
        for c in Dst[i]:
            srch(c,l+1, Lng, Dst) Dst[i] is not None and len(Dst[i]) > 0 Dst[i] is not None Dst[i] Dst i None len(Dst[i]) > 0 len(Dst[i]) len Dst[i] Dst i 0 for c in Dst[i]:
            srch(c,l+1, Lng, Dst) c Dst[i] Dst i srch(c,l+1, Lng, Dst) srch c l+1 l 1 Lng Dst i i l l Lng Lng Dst Dst def main():
    num = int(input())
    Dst = [None for i in range(num + 1)]
    Lng = [-1] * (num + 1)
    
    for n in range(1, num+1):
        a = list(map(int,input().split()))
        u = a[0]
        if a[1] > 0:
            Dst[u] = a[2:]

    srch(1, 0, Lng, Dst)

    for n in range(1, num+1):
        l = Lng[n]
        if l > num:
            l = -1
        print("{} {}".format(n,l)) main num = int(input()) num int(input()) int input() input None for i in range(num + 1) for i in range(num + 1) i range(num + 1) range num + 1 num 1 for i in range(num + 1) None Dst = [None for i in range(num + 1)] Dst [None for i in range(num + 1)] Lng = [-1] * (num + 1) Lng [-1] * (num + 1) [-1] -1 num + 1 num 1 for n in range(1, num+1):
        a = list(map(int,input().split()))
        u = a[0]
        if a[1] > 0:
            Dst[u] = a[2:]

     n range(1, num+1) range 1 num+1 num 1 a = list(map(int,input().split())) a list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split u = a[0] u a[0] a 0 if a[1] > 0:
            Dst[u] = a[2:]

     a[1] > 0 a[1] a 1 0 Dst[u] = a[2:] Dst[u] Dst u a[2:] a 2: 2 srch(1, 0, Lng, Dst) srch 1 0 Lng Dst for n in range(1, num+1):
        l = Lng[n]
        if l > num:
            l = -1
        print("{} {}".format(n,l)) n range(1, num+1) range 1 num+1 num 1 l = Lng[n] l Lng[n] Lng n if l > num:
            l = -1
         l > num l num l = -1 l -1 print("{} {}".format(n,l)) print "{} {}".format(n,l) "{} {}".format "{} {}" format n l if __name__ == '__main__':
    main() __name__ == '__main__' __name__ '__main__' main() main def srch(i, l, Lng, Dst):
    if Lng[i] != -1 and Lng[i] < l:
        return
    Lng[i] = l
    if Dst[i] is not None and len(Dst[i]) > 0:
        for c in Dst[i]:
            srch(c,l+1, Lng, Dst) def srch(i, l, Lng, Dst):
    if Lng[i] != -1 and Lng[i] < l:
        return
    Lng[i] = l
    if Dst[i] is not None and len(Dst[i]) > 0:
        for c in Dst[i]:
            srch(c,l+1, Lng, Dst) srch def main():
    num = int(input())
    Dst = [None for i in range(num + 1)]
    Lng = [-1] * (num + 1)
    
    for n in range(1, num+1):
        a = list(map(int,input().split()))
        u = a[0]
        if a[1] > 0:
            Dst[u] = a[2:]

    srch(1, 0, Lng, Dst)

    for n in range(1, num+1):
        l = Lng[n]
        if l > num:
            l = -1
        print("{} {}".format(n,l)) def main():
    num = int(input())
    Dst = [None for i in range(num + 1)]
    Lng = [-1] * (num + 1)
    
    for n in range(1, num+1):
        a = list(map(int,input().split()))
        u = a[0]
        if a[1] > 0:
            Dst[u] = a[2:]

    srch(1, 0, Lng, Dst)

    for n in range(1, num+1):
        l = Lng[n]
        if l > num:
            l = -1
        print("{} {}".format(n,l)) main
def srch(i, l, Lng, Dst):
    if Lng[i] != -1 and Lng[i] < l:
        return
    Lng[i] = l
    if Dst[i] is not None and len(Dst[i]) > 0:
        for c in Dst[i]:
            srch(c,l+1, Lng, Dst)

def main():
    num = int(input())
    Dst = [None for i in range(num + 1)]
    Lng = [-1] * (num + 1)
    
    for n in range(1, num+1):
        a = list(map(int,input().split()))
        u = a[0]
        if a[1] > 0:
            Dst[u] = a[2:]

    srch(1, 0, Lng, Dst)

    for n in range(1, num+1):
        l = Lng[n]
        if l > num:
            l = -1
        print("{} {}".format(n,l))

if __name__ == '__main__':
    main()