#include<bits/stdc++.h>
#define mo 1000000007
using namespace std;
long long n,m,i,j,f[5005][5005],sum;
int main(){
	scanf("%lld%lld",&n,&m);
	f[0][m]=1;
	for(i=1;i<=n;i++)
		for(sum=0,j=m;j>=1;j--){
			f[i][j]=(sum*j+f[i-1][j]*(j+1))%mo;
			sum=(sum*2+f[i-1][j])%mo;
		}
	for(i=1,sum=0;i<=m;i++)
		sum=(sum+f[n][i])%mo;
	printf("%lld\n",sum);
    return 0;
}