MAX_N = 500
BRANCH = 4

def tree(br, n, l=n, sum=1, cnt=1)
  for b in br+1 .. BRANCH
    sum += n
    return if sum >= MAX_N
    
    return if l * 2 >= sum and b >= BRANCH
    if b == br + 1
      c = $ra[n] * cnt
    else
      c = c * ($ra[n] + (b - br - 1)) / (b - br)
    end
    $unrooted[sum] += c if l * 2 < sum
    next if b >= BRANCH
    $ra[sum] += c
    (1...n).each {|m| tree(b, m, l, sum, c)}
  end
end

def bicenter(s)
  return if s.odd?
  aux = $ra[s / 2]
  $unrooted[s] += aux * (aux + 1) / 2
end

$ra       = [0] * MAX_N
$unrooted = [0] * MAX_N

$ra[0] = $ra[1] = $unrooted[0] = $unrooted[1] = 1
for n in 1...MAX_N
  tree(0, n)
  bicenter(n)
  puts  % [n, $unrooted[n]]
end