mod = 10**9+7 comb_num = 10**6 + 2 F = [1] * comb_num F_ = [1] * comb_num for i in range(2, comb_num): F[i] = F[i-1]*i%mod F_[-1] = pow(F[-1], -1, mod) for i in range(comb_num-1, 0, -1): F_[i-1] = F_[i]*i%mod def comb(a, b): if 0 <= b <= a: return F[a] * F_[b] * F_[a-b] % mod else: return 0 n, r, g, b = list(map(int, input().split())) m = r + g + b r, b = min(r, g, b), max(r, g, b) g = m - r - b ans = 0 if n * 2 + 3 < m * 3: print(0) else: for a2 in range(m//2+1): a1 = m - a2 * 2 ans0 = comb(n-m+1, a1+a2) * comb(a1+a2, a1) * pow(2, a2, mod) % mod if not ans0: continue for b01 in range(min(a2, r)+1): for b20 in range(min(r-b01, a2-b01)+1): b12 = a2-b01-b20 b0 = r-b01-b20 b1 = g-b01-b12 b2 = b-b12-b20 if min(b01, b12, b20, b0, b1, b2) < 0: continue ans1 = F[a2] * F_[b01] * F_[b12] % mod * F_[b20] % mod ans1 = ans1 * F[a1] * F_[b0] % mod * F_[b1] * F_[b2] % mod ans = (ans + ans0 * ans1) % mod print(ans)