#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<stack>
#include<cstring>
#include<utility>
#include<cmath>
#include<assert.h>
#include<set>
#include<map>
#include<unordered_set>
#include<unordered_map>
#include<complex>
#include<bitset>

#define int long long
using namespace std;
#define rep(i, n) for(int i=0;i<(n);++i)
typedef pair<int, int> pii;
const int INF = 1l << 60;
#define u_b upper_bound
#define l_b lower_bound

//const int mod = //998244353;
const int mod = 1000000007;
const int FacN = 200200;//使わないなら0

constexpr int power(int a, int b) {
    int res = 1;
    while (b) {
        if (b & 1)res *= a;
        a *= a;
        res %= mod;
        a %= mod;
        b /= 2;
    }
    return res;
}

constexpr int inv(int x) {
    return power(x, mod - 2);
}

const struct Fac {
    int val[FacN];

    constexpr Fac() : val() {
        if (FacN == 0)return;
        val[0] = 1;
        for (int i = 1; i < FacN; ++i) val[i] = val[i - 1] * i % mod;
    }

    const int &operator[](size_t i) const {
        return val[i];
    }
} fac;

const struct FacInv {
    int val[FacN];

    constexpr FacInv() : val() {
        if (FacN == 0)return;
        val[FacN - 1] = 1;
        for (int i = 1; i < FacN; ++i)val[FacN - 1] = val[FacN - 1] * i % mod;
        val[FacN - 1] = inv(val[FacN - 1]);
        for (int i = FacN - 1; i >= 1; --i)val[i - 1] = val[i] * i % mod;
    }

    const int &operator[](size_t i) const {
        return val[i];
    }
} fac_inv;

int Perm(int n, int r) {
    if (n < r) return 0;
    return fac[n] * fac_inv[n - r] % mod;
}

int Comb(int n, int r) {
    return Perm(n, r) * fac_inv[r] % mod;
}
//mod,Factorial書き換え
//要検証
int B, W;
int bi[200200];
int wi[200200];
int hp[200200];//half[i]=(1/2)^i(mod)
const int half = 500000004;

signed main() {
    hp[0] = 1;
    rep(i, 200199) {
        hp[i + 1] = hp[i] * half % mod;
    }
    cin >> B >> W;
    if (B < W) {
        for (int i = 1; i <= B; ++i) {
            cout << half << endl;
        }
        for (int i = B + 1; i <= W; ++i) {
            bi[i] = bi[i - 1] + Comb(i - 2, B - 1) * hp[i - 1] % mod;
            bi[i] %= mod;
            int ans = (1 - bi[i]) * half;
            ans %= mod;
            ans += mod;
            ans %= mod;
            cout << ans << endl;
        }
        for (int i = W + 1; i <= B + W; ++i) {
            wi[i] = wi[i - 1] + Comb(i - 2, W - 1) * hp[i - 1] % mod;
            wi[i] %= mod;
            bi[i] = bi[i - 1] + Comb(i - 2, B - 1) * hp[i - 1] % mod;
            bi[i] %= mod;
            int ans = wi[i] + (1 - bi[i] - wi[i]) % mod * half;
            ans %= mod;
            ans += mod;
            ans %= mod;
            cout << ans << endl;
        }
    } else {
        for (int i = 1; i <= W; ++i) {
            cout << half << endl;
        }
        for (int i = W + 1; i <= B; ++i) {
            wi[i] = wi[i - 1] + Comb(i - 2, W - 1) * hp[i - 1] % mod;
            wi[i] %= mod;
            int ans = wi[i] + (1 - wi[i]) * half;
            ans %= mod;
            ans += mod;
            ans %= mod;
            cout << ans << endl;
        }
        for (int i = B + 1; i <= B + W; ++i) {
            bi[i] = bi[i - 1] + Comb(i - 2, B - 1) * hp[i - 1] % mod;
            bi[i] %= mod;
            wi[i] = wi[i - 1] + Comb(i - 2, W - 1) * hp[i - 1] % mod;
            wi[i] %= mod;
            int ans = wi[i] + (1 - bi[i] - wi[i]) % mod * half;
            ans %= mod;
            ans += mod;
            ans %= mod;
            cout << ans << endl;
        }
    }
    return 0;
}


Measured memory_bytes: 6144