#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MOD = 1000000007; int main() { int n, k; cin >> n >> k; vector a(k+2); a[k] = 0; a[k+1] = (1LL << n) - 1; for(int i=0; i> a[i]; sort(a.begin(), a.end()); long long ans = 1; for(int i=1; i bs = a[i-1] ^ a[i]; int cnt = bs.count(); for(int j=1; j<=cnt; ++j){ ans *= j; ans %= MOD; } } cout << ans << endl; return 0; }