#include <algorithm>
#include <ctime>
#include <cmath>
#include <set>
#include <map>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
using namespace std;
#define sci stack <int>
#define vci vector <int>
#define vcs vector <string>
#define vcd vector <double>
#define vci64 vector <long long>
const int maxn = 9 + 5;
const int maxk = 9 * 9 + 5;
typedef unsigned int uint;
typedef long long int64;
typedef unsigned long long uint64;
template <class T> inline T Sqr(const T & x) { return x * x; }
template <class T> inline T Abs(const T & x) { return x > 0 ? x : -x; }
template <class T> inline T Min(const T & a, const T & b) { return a < b ? a : b; }
template <class T> inline T Max(const T & a, const T & b) { return a > b ? a : b; }
template <class T> inline T Ksm(const T & a, const T & b, const T & m) { T _ = 1; for (; b; b >>= 1, a = a * a % m) (b & 1) ? _ = _ * a % m : 0; return _ % m; }
template <class T> inline void Swap(T & a, T & b) { T _; _ = a; a = b; b = _; }
int n, k, cn[1 << 9 + 1], cnt, state[1 << 9 + 1];
int64 f[maxn][maxk][1 << 9 + 1], ans;
void dfs(int wid, int sta)
{
if (wid == n) return state[++cnt] = sta, (void) 0;
if (dfs(wid + 1, sta << 1), !(sta & 1)) dfs(wid + 1, sta << 1 | 1);
}
bool check(int a, int b) { return !(a & b) && !((a << 1) & b) && !((a >> 1) & b); }
int main()
{
scanf("%d%d", &n, &k), dfs(0, 0);
for (int i = 1; i <= (1 << n) - 1; ++i)
cn[i] = cn[i / 2] + (i & 1);
f[0][0][1] = 1;
for (int i = 1; i <= n; ++i)
for (int j = 0; j <= k; ++j)
for (int li = 1; li <= cnt; ++li)
for (int ru = 1; ru <= cnt; ++ru)
if ((j >= cn[state[ru]]) && (check(state[li], state[ru])))
f[i][j][ru] += f[i - 1][j - cn[state[ru]]][li];
for (int i = 1; i <= cnt; ++i) ans += f[n][k][i];
printf("%lld", ans);
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGN0aW1lPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNsaW1pdHM+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgc2NpIHN0YWNrIDxpbnQ+CiNkZWZpbmUgdmNpIHZlY3RvciA8aW50PgojZGVmaW5lIHZjcyB2ZWN0b3IgPHN0cmluZz4KI2RlZmluZSB2Y2QgdmVjdG9yIDxkb3VibGU+CiNkZWZpbmUgdmNpNjQgdmVjdG9yIDxsb25nIGxvbmc+Cgpjb25zdCBpbnQgbWF4biA9IDkgKyA1Owpjb25zdCBpbnQgbWF4ayA9IDkgKiA5ICsgNTsKCnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CnR5cGVkZWYgbG9uZyBsb25nIGludDY0Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50NjQ7Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgU3FyKGNvbnN0IFQgJiB4KSB7IHJldHVybiB4ICogeDsgfQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgQWJzKGNvbnN0IFQgJiB4KSB7IHJldHVybiB4ID4gMCA/IHggOiAteDsgfQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgTWluKGNvbnN0IFQgJiBhLCBjb25zdCBUICYgYikgeyByZXR1cm4gYSA8IGIgPyBhIDogYjsgfQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgTWF4KGNvbnN0IFQgJiBhLCBjb25zdCBUICYgYikgeyByZXR1cm4gYSA+IGIgPyBhIDogYjsgfQp0ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIFQgS3NtKGNvbnN0IFQgJiBhLCBjb25zdCBUICYgYiwgY29uc3QgVCAmIG0pIHsgVCBfID0gMTsgZm9yICg7IGI7IGIgPj49IDEsIGEgPSBhICogYSAlIG0pIChiICYgMSkgPyBfID0gXyAqIGEgJSBtIDogMDsgcmV0dXJuIF8gJSBtOyB9CnRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBTd2FwKFQgJiBhLCBUICYgYikgeyBUIF87IF8gPSBhOyBhID0gYjsgYiA9IF87IH0KCmludCBuLCBrLCBjblsxIDw8IDkgKyAxXSwgY250LCBzdGF0ZVsxIDw8IDkgKyAxXTsKaW50NjQgZlttYXhuXVttYXhrXVsxIDw8IDkgKyAxXSwgYW5zOwoKdm9pZCBkZnMoaW50IHdpZCwgaW50IHN0YSkKewogICBpZiAod2lkID09IG4pIHJldHVybiBzdGF0ZVsrK2NudF0gPSBzdGEsICh2b2lkKSAwOwogICBpZiAoZGZzKHdpZCArIDEsIHN0YSA8PCAxKSwgIShzdGEgJiAxKSkgZGZzKHdpZCArIDEsIHN0YSA8PCAxIHwgMSk7Cn0KCmJvb2wgY2hlY2soaW50IGEsIGludCBiKSB7IHJldHVybiAhKGEgJiBiKSAmJiAhKChhIDw8IDEpICYgYikgJiYgISgoYSA+PiAxKSAmIGIpOyB9CgppbnQgbWFpbigpCnsKCiAgIHNjYW5mKCIlZCVkIiwgJm4sICZrKSwgZGZzKDAsIDApOwogICBmb3IgKGludCBpID0gMTsgaSA8PSAoMSA8PCBuKSAtIDE7ICsraSkKICAgICAgY25baV0gPSBjbltpIC8gMl0gKyAoaSAmIDEpOwogICBmWzBdWzBdWzFdID0gMTsKICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKQogICAgICBmb3IgKGludCBqID0gMDsgaiA8PSBrOyArK2opCiAgICAgICAgIGZvciAoaW50IGxpID0gMTsgbGkgPD0gY250OyArK2xpKQogICAgICAgICAgICBmb3IgKGludCBydSA9IDE7IHJ1IDw9IGNudDsgKytydSkKICAgICAgICAgICAgICAgaWYgKChqID49IGNuW3N0YXRlW3J1XV0pICYmIChjaGVjayhzdGF0ZVtsaV0sIHN0YXRlW3J1XSkpKQogICAgICAgICAgICAgICAgICBmW2ldW2pdW3J1XSArPSBmW2kgLSAxXVtqIC0gY25bc3RhdGVbcnVdXV1bbGldOwogICBmb3IgKGludCBpID0gMTsgaSA8PSBjbnQ7ICsraSkgYW5zICs9IGZbbl1ba11baV07CiAgIHByaW50ZigiJWxsZCIsIGFucyk7CgogICByZXR1cm4gMDsKfQo=