Problem: Mashmokh's boss, Bimokh, didn't like Mashmokh. So he fired him. Mashmokh decided to go to university and participate in ACM instead of finding a new job. He wants to become a member of Bamokh's team. In order to join he was given some programming tasks and one week to solve them. Mashmokh is not a very experienced programmer. Actually he is not a programmer at all. So he wasn't able to solve them. That's why he asked you to help him with these tasks. One of these tasks is the following.

A sequence of l integers b1, b2, ..., bl (1 ≤ b1 ≤ b2 ≤ ... ≤ bl ≤ n) is called good if each number divides (without a remainder) by the next number in the sequence. More formally <image> for all i (1 ≤ i ≤ l - 1).

Given n and k find the number of good sequences of length k. As the answer can be rather large print it modulo 1000000007 (109 + 7).

Input

The first line of input contains two space-separated integers n, k (1 ≤ n, k ≤ 2000).

Output

Output a single integer — the number of good sequences of length k modulo 1000000007 (109 + 7).

Examples

Input

3 2


Output

5


Input

6 4


Output

39


Input

2 1


Output

2

Note

In the first sample the good sequences are: [1, 1], [2, 2], [3, 3], [1, 2], [1, 3].

Solution (in JAVA):

Solution:

import java.util.Arrays;
import java.util.Scanner;

public class q4 
{

    public static void main(String args[])
    {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        int k=s.nextInt();
        long[][] dp=new long[n+1][k+1];
        
//      for(int i=1;i<=n;i++)
//          for(int j=0;j<k;j++)
//              dp[i][j]=1;
        long mod=(long)1e9+7;
        
//      for(int i=1;i<=n;i++)
//          {
//          dp[i][1]+=1;
//          
//          for(int k1=2;k1*i<=n;k1++)
//              dp[k1*i][1]=(dp[i][1])%mod;
//          
////            System.out.println("Step "+i);
////            for(int j=1;j<=n;j++)
////                System.out.println(j+" "+Arrays.toString(dp[j]));
////            System.out.println();
//          //dp[i][0]=i;
//          }
        for(int i=1;i<=n;i++)
            dp[i][1]=1;
        //long ans=0;
        //System.out.println(1+" "+Arrays.toString(dp[1]));
        
        
        for(int i=1;i<=k;i++)
        {
            for(int j=1;j<=n;j++)
                for(int k1=j;k1<=n;k1+=j)
                    dp[k1][i]=(dp[k1][i]+dp[j][i-1])%mod;
        }
        long ans=0;
        for(int i=1;i<=n;i++)
            ans=(ans+dp[i][k])%mod;
        
//      for(int i=2;i<=n;i++)
//      {
//          for(int j=2;j<=k;j++)
//          {
//              dp[i][j]=(dp[i][j]+dp[i][j-1])%mod;
//              if(dp[i][1]==2)
//                  dp[i][j]++;
//              if(dp[i][j]!=0)
//              {
//                  for(int k1=2;i*k1<=n;k1++)
//                      {
//                      dp[k1*i][j]=dp[i][j];
//                      //System.out.println(k1*i);
//                      }
//              }
//          }
//          System.out.println(i+" "+Arrays.toString(dp[i]));
//          ans=(ans+dp[i][k])%mod;
//      }
        //System.out.println(Arrays.toString(dp[1]));
        System.out.println((ans)%mod);
        
    }
}