#!/usr/local/bin/ruby class TripleCardComp def initialize(*arg) @n,@a = arg @n = @n.to_r @dp = Array.new(@n+1){Array.new(@n+1){Array.new(@n+1)}} @dp[0][0][0] = 0 end private def dynamic(x,y,z) if x < 0 || y < 0 || z<0 0 else unless @dp[x][y][z] @dp[x][y][z] = (dynamic(x-1,y+1,z)*x + dynamic(x,y-1,z+1)*y + dynamic(x,y,z-1)*z + @n)/(x+y+z).to_r end @dp[x][y][z] end end public def ans g = (0...@n).group_by{|i| @a[i]} x = g[0] || [] y = g[1] || [] z = g[2] || [] dynamic(x.size,y.size,z.size) end end ### END: class TripleCardComp iod = STDIN n, = iod.gets.split.map &:to_i a = iod.gets.split.map &:to_i puts TripleCardComp.new(n,a).ans exit 0