func_code_string: #include <bits/stdc++.h>   #pragma comment(linker,  /STACK:671088640 )   using namespace std;   const int MOD = 1000000007;   const int INF = 20000000;   const long double EPS = 1e-7;   const int HASH_POW = 29;   const long double PI = acos(-1.0);   mt19937_64 rnd(1);   double workTime() { return double(clock()) / CLOCKS_PER_SEC; }   void my_return(int code) { exit(code); }   int bin_pow(int a, int n) {     int ans = 1;     while (n) {       if (n & 1) ans = ans * 1ll * a % MOD;       n >>= 1;       a = a * 1ll * a % MOD;     }     return ans;   }   int f[100010], rev[100010];   int C(int n, int k) {     if (k < 0 || k > n) return 0;     int res = f[n] * 1ll * rev[k] % MOD;     return res * 1ll * rev[n - k] % MOD;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     f[0] = 1;     for (int i = 1; i <= 100000; ++i) f[i] = f[i - 1] * 1ll * i % MOD;     for (int i = 0; i <= 100000; ++i) rev[i] = bin_pow(f[i], MOD - 2);     int f, w, h;     scanf( %d %d %d , &f, &w, &h);     if (w == 0) {       printf( 1 n );       my_return(0);     } else if (f == 0) {       if (w > h) {         printf( 1 n );         my_return(0);       } else {         printf( 0 n );         my_return(0);       }     } else if (w <= h) {       printf( 0 n );       my_return(0);     }     int total = 0, good = 0;     for (int i = 1; i <= w; ++i) {       if (i > 1) total = (total + C(w - 1, i - 1) * 1ll * C(f - 1, i - 2)) % MOD;       total = (total + 2ll * C(w - 1, i - 1) * C(f - 1, i - 1)) % MOD;       total = (total + C(w - 1, i - 1) * 1ll * C(f - 1, i)) % MOD;     }     for (int i = 1; i <= w; ++i) {       if (i * (h + 1) > w) break;       int w1 = w - i * h;       if (i > 1) good = (good + C(w1 - 1, i - 1) * 1ll * C(f - 1, i - 2)) % MOD;       good = (good + 2ll * C(w1 - 1, i - 1) * C(f - 1, i - 1)) % MOD;       good = (good + C(w1 - 1, i - 1) * 1ll * C(f - 1, i)) % MOD;     }     printf( %d n , good * 1ll * bin_pow(total, MOD - 2) % MOD);     my_return(0);   }   