program grdeg
    integer, allocatable :: adjac(:,:)
    character(len=40):: fmt

    read(*, *) n
    allocate(adjac(n,n))
    adjac = 0
    do
       read(*,*, end=1) i,j
       adjac(i,j) = adjac(i,j)+1
       adjac(j,i) = adjac(j,i)+1
    end do
  1 continue  
  2 format ("Node ",  i0, " has a degree of " , i0)
    print 2, (i, sum(adjac(:,i),1),i=1,n)
    
    write(fmt, '(a,i0,a)') '(', n,  '(I2))' 
    print fmt, ((adjac(j,i), j=1,n),i=1,n)
  end program