#define int long long
#define fir first
#define snd second
typedef std::pair<int,int> pii;
const int inf=100010;
int n,k;
int g[inf][inf][inf]; //f[i][j][s]代表前i行已经放完了国王,共放了n个国王
//s代表第i行哪些位置放了国王,此时方案数是多少
signed main()
{
//O(nk2^(2n))
std::cin>>n>k;
f[0][0][0]=1;
for(int i=0;i<n;i++)
for(int j=0;j<=k;j++)
for(int s=0;s<(1<<n);s++) //要从f[i][j][s]这个状态向外转移,在第i+1行放国王
if(f[i][j][s])
for(int r=0;r<(1<<n);r++) //i+1行怎么放国王
{ //检查国王会不会相互攻击
if(r&s)continue; //有两个国王在同一列
if((r>>1)&s)continue;
if((r<<1)&s)continue;
if((r<<1)&r)continue;
f[i+1][j+std::__builtin_popcount(r)][r]+=f[i][j][s]; //std::__builtin_popcount()统计二进制有多少个1
}
return 0;
}