#include <stdio.h>
#include <algorithm>

using namespace std;

const long long mod = 1000000007;
long long w , b;
long long expw[210000] , expb[210000] , pw[210000] , pb[210000];
long long fac[210000] , ifac[210000] , inv2[210000];
long long ans[210000];
long long ksm ( long long f , long long x ) {
	long long s = 1;
	while ( x ) {
		if ( x % 2 ) s = s * f % mod;
		f = f * f % mod; x = x / 2;
	}
	return s % mod;
}
long long inv ( long long x ) {
	return ksm ( x , mod - 2 );
}
long long C ( long long x , long long y ) {
	return fac[x] * ifac[y] % mod * ifac[x-y] % mod;
}
void work () {
	long long i;
	scanf ( "%lld%lld" , &b , &w );
	fac[0] = 1;
	for ( i = 1 ; i <= b + w ; i++ ) fac[i] = fac[i-1] * i % mod;
	ifac[b+w] = inv ( fac[b+w] );
	for ( i = b + w - 1 ; i >= 0 ; i-- ) ifac[i] = (ifac[i+1]*(i+1)) % mod;
	inv2[0] = 1;
	inv2[1] = inv ( 2 );
	for ( i = 2 ; i <= b + w ; i++ ) inv2[i] = inv2[i-1] * inv2[1] % mod;
	for ( i = b ; i <= b + w ; i++ ) {
		expb[i] = C(i-1,b-1) * inv2[i] % mod;
		//printf ( " %lld\n" , pb[i] );
	}
	for ( i = w ; i <= b + w ; i++ ) {
		expw[i] = C(i-1,w-1) * inv2[i] % mod;
		//printf ( "  %lld\n" , pw[i] );
	}
	for ( i = 1 ; i <= b + w ; i++ ) {
		pw[i] = (pw[i-1] + expw[i]) % mod;
		pb[i] = (pb[i-1] + expb[i]) % mod;
	}
	for ( i = 0 ; i < b + w ; i++ ) {
		printf ( "%lld\n" , ( ( 1 - pw[i] - pb[i] + mod + mod ) % mod * inv2[1] % mod + pw[i] ) % mod );
	}
}
int main () {
	work ();
	return 0;
}
