import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sr=new Scanner(System.in);
int k=sr.nextInt();
int l=sr.nextInt();
int sum=0;
int [][] a=new int[l+1][k+1];
for(int i=0;i<k;i++)
{
a[0][i]=1;//第一个数一种情况
}
for(int i=1;i<l;i++)//第i个数
{
for(int j=0;j<k;j++)//第i个数是j的可能情况
{
for(int z=0;z<k;z++)//相邻判断
{
if(z!= j-1 && z!= j+1)
{
a[i][j]+=a[i-1][z];
a[i][j]%=1000000007;
}
}
}
}
for(int i=1;i<k;i++)//去掉首位为0的情况
{
sum+=a[l-1][i];//求和方法数
sum%=1000000007;
}
System.out.print(sum);
}
}
public class Main{
public static void main(String[] args){
Scanner sr=new Scanner(System.in);
int k=sr.nextInt();
int l=sr.nextInt();
int sum=0;
int [][] a=new int[l+1][k+1];
for(int i=0;i<k;i++)
{
a[0][i]=1;//第一个数一种情况
}
for(int i=1;i<l;i++)//第i个数
{
for(int j=0;j<k;j++)//第i个数是j的可能情况
{
for(int z=0;z<k;z++)//相邻判断
{
if(z!= j-1 && z!= j+1)
{
a[i][j]+=a[i-1][z];
a[i][j]%=1000000007;
}
}
}
}
for(int i=1;i<k;i++)//去掉首位为0的情况
{
sum+=a[l-1][i];//求和方法数
sum%=1000000007;
}
System.out.print(sum);
}
}