http://fayaa.com/code/view/27362/raw/
#include<iostream>
#include<cstdio>
using namespace std;
__int64 jc[210],mod=1000000007;
__int64 exgcd(__int64 a,__int64 b,__int64 &x,__int64 &y){
if(b==0) return x=1,y=0,a;
__int64 res=exgcd(b,a%b,y,x);
y-=a/b*x;
return res;
}
__int64 Inv(__int64 a,__int64 mod){
__int64 x,y;
exgcd(a,mod,x,y);
return (x%mod+mod)%mod;
}
__int64 C(int n,int m)
{
if(n==m) return 1;
if(m==0) return 1;
if(m==1) return n;
__int64 d=jc[m]*jc[n-m]%mod;
return jc[n]*Inv(d,mod)%mod;
}
int main()
{
int i,j,k,N,M,n;
for(jc[1]=1,i=2;i<=200;i++) jc[i]=jc[i-1]*i%mod;//printf("%I64d\n",C(1,1));
while(scanf("%d%d",&N,&M)!=EOF)
{
n=N/2+1;
__int64 ans=0;
for(i=n;i<=N;i++)
ans+=C(2*N-i-2,N-2)%mod;
if(M==-1) ans=C(N+N-1,N-1)%mod-N*ans%mod;
printf("%I64d\n",(ans%mod+mod)%mod);
}
return 0;
}