#include"bits/stdc++.h"
#define int long long
#define mod 100000007
#define MAX 1000005
using namespace std;
int a[MAX],f[MAX];
int n,m;
int ans;
int t;
int j(int x,int y)
{
ans=1;
while(y)
{
if(y&1)
{
ans=ans*x%mod;
}
x=x*x%mod;
y>>=1;
}
return ans;
}
int frac(int a)
{
ans=1;
while(a)
{
ans=ans*a&mod;
a--;
}
return ans;
}
signed main()
{
cin>>n>>m;
a[0]=1;
f[0]=1;
t=j(2,n)-1;
for(int i=1;i<=n;i++)
{
a[i]=a[i-1]*(t+1-i+mod)%mod;
}
for(int i=2;i<=m;i++)
{
f[i]=((a[i-1]-f[i-1]+mod)%mod-f[i-2]*(i-1)%mod*(t-i+2)%mod+mod)%mod;
}
int answer=f[m]*j(frac(m),100000005)%mod;
cout<<answer;
return 0;
}
样例过了? 但10分!