Description:
AC代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stdlib.h>
#include<queue>
#include<map>
#include<iomanip>
#include<math.h>
const int INF = 0x3f3f3f3f;
using namespace std;
typedef long long ll;
typedef double ld;
const int N = 100010;
const int mod = 1000000009;
int i,j,k,l;
int n,m;
int ans;
ll mi(ll a,ll b)
{
    ll ans=1;
    a%=mod;
    while(b>0)
    {
        if(b%2==1)
            ans=(ans*a)%mod;
        b/=2;
        a=(a*a)%mod;
    }
    return ans;
}
int main()
{
       scanf("%d %d",&n,&m);
        ll ans=mi(2,m);
        ans--;
        if(n>ans)
        {
            printf("0\n");
            return 0;
        }
        ll res=ans-1;
        ans=(ans%mod+mod)%mod;
        res=(res%mod+mod)%mod;//防止为负数
        for(i=2;i<=n;i++)
        {
            ans*=res;
            ans%=mod;
            res--;
            res=(res%mod+mod)%mod;
        }
        printf("%lld\n",ans%mod);
    return 0;
}