#include #include #include using namespace std; using namespace atcoder; using ll = long long; using mint = modint1000000007; const int MX = 3000010; mint f[MX],inv[MX],fi[MX]; constexpr ll mod = 1000000007; void solve(){ inv[1] = 1; for(int i=2;i> x >> y >> z; int m = x + y + z; if(m==0){ cout << 1 << "\n"; return 0; } solve(); vector f(m + 1); for(i=0;i<=m;i++){ f[i] = (m + 1 - i)&1 ? -nck(m + 1,i) : nck(m + 1,i); } for(i=0;i<=m;i++) f[i] *= -1; f[0]++; for(i=0;i<=m;i++) f[i] *= inv[2]; for(i=1;i<=m;i++) f[i] += f[i - 1]*inv[2]; // for(i=0;i<=m;i++) cout << f[i].val() << " "; // cout << "\n"; mint ans = 0; for(i=1;i<=m;i++){ ans += nck(i - 1 + x,x)*nck(i - 1 + y,y)*nck(i - 1 + z,z)*f[i]; } cout << ans.val() << "\n"; }