import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t-- != 0)
{
int n = sc.nextInt();
int m = sc.nextInt();
if(n<m) //only horizontal placement
{
System.out.println("1");
continue;
}
if(n==m) //place everything either horizontally or
vertically
{
System.out.println("2");
continue;
}
System.out.println(countWays(0,n,m));
}
}
static int countWays(int row, int n, int m)
{
if(row == n)
{
return 1;
}
if(row > n)
{
return 0;
}
int cnt = 0;
cnt += countWays(row+1, n, m); //for placing 1 tile horizontally
cnt += countWays(row + m, n, m); //for placing tiles vertically
return (cnt % (1000000007));
}
}
This code results into TLE for n>>m. Could you suggest some changes in this recursive code?