N, M, K = gets.strip.split(/ /).collect{|n| n.to_i}

if N > 1000 || M > 1000 || K > 1000
	puts 0
	exit
end

MOD = 10 ** 9 + 7

$fact1_table = {}
def fact1(n)
	if ret = $fact1_table[n]
		return ret
	end
	ret = 1
	(2..n).each{|i|
		ret *= i
	}
	$fact1_table[n] = ret
	ret
end

$fact2_table = {}
def fact2(n)
	if ret = $fact2_table[n]
		return ret
	end
	ret = 1
	(N..n).each{|i|
		ret *= i
	}
	$fact2_table[n] = ret
	ret
end


count = 0

table_m = []
table_mk = []

(0..M).each{|m|
#p m
	(0..K).each{|k|
		if m < k
			m2 = m
			k2 = k
		else
			m2 = k
			k2 = m
		end
		
		
		t1 = table_m[m2]
		t2 = table_mk[m2]
		unless t1
			t1 = table_m[m2] = []
			t2 = table_mk[m2] = []
		end
		
		unless c = t2[k2]
			c = 0
#			unless c = t1[k2]
				c = fact2(N - 1 + m + k)
				c /= fact1(m)
				t1[k2] = c
#			end
			c /= fact1(k)
			c = c % MOD
			c = (c * ((3 ** (M - m + K - k)) % MOD)) % MOD
			t2[k2] = c
		end
		
		count = (count + c) % MOD
	}
}

puts count

