//怪不得选择填空这么少也不太难,原来编程这么难做的么【泪流满面】
//正确率死活只有15%只知道倒着思考,按上楼梯的最后一阶往下看,哪位大佬解解惑【哭哭】
#include <iostream>
#include<vector>
 
usingnamespacestd;
 
intmain()
{     
    int n, m;    
    cin >> n >> m;     
    int*a = new int[n+1];     
    a[1] = 1;     
    a[2] = 2;     
    a[3] = 4;     
    if(n>3)     
    {         
        for(int i = 4; i <= n; i++)        
        {            
          for(int j = 0; j<m; j++)            
          {                 
              a[i] = a[i] + a[i - 1 - j];             
          }         
       }    
    }    
   cout << a[n];     
   return 0;
}