const
inf='empire.in';
ouf='empire.out';
maxn=200;
var
dp:array[1..maxn,1..maxn] of longint;
i,j,k,n,l,s:longint;
function change(p:longint):longint;
begin
if odd(p) then exit(p)
else exit(p-1);
end;
begin
assign(input,inf);reset(input);
assign(output,ouf);rewrite(output);
readln(n,k);
if k=0 then
begin
writeln(1);
close(output);
halt;
end;
if k>=2*n-1 then
begin
writeln(0);
close(output);
halt;
end;
for i:=1 to 2*n-1 do
if odd(i) then dp[i,1]:=i
else dp[i,1]:=i-1;
for i:=1 to 2*n-1 do
for j:=2 to i do
for l:=1 to i-j+1 do
dp[i,j]:=(dp[i,j]+dp[i-l,j-1]*(change(i)-j+1)) mod 504;
i:=2*n-1;
if k=1 then
begin
writeln((i*(i+1) div 2-i div 2) mod 504);
close(output);
halt;
end else
for i:=k to 2*n-1 do inc(s,dp[i,k]);
writeln(s mod 504);
close(input);
close(output);
end.